一个很不错的网址,用来学习xml schema:
http://www.w3schools.com/schema/schema_facets.asp
例子:
testSchema.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="test" type="testType"/>
<xs:complexType name="testType">
<xs:sequence>
<xs:element name="node1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="1"/>
<xs:enumeration value="2"/>
<xs:enumeration value="3"/>
<xs:enumeration value="4"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="node2">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="2"/>
<xs:maxLength value="2"/>
<xs:pattern value="no|ye|qq"/>
<xs:enumeration value="qq"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="node3">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z]{2}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="node4">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="/d{12}|"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="node5">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="12"/>
<xs:maxLength value="12"/>
<xs:pattern value="/d{12}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="node6">
<xs:simpleType>
<xs:restriction base="xs:double">
<xs:maxExclusive value="99999.9"/>
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="node7">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2"/>
<xs:minLength value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="node8">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="a|q|s"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="node9">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[A-E]|Y|N|K|P|S|"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="node10">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="0"/>
<xs:maxLength value="12"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
test.xsdconfig 用来创建包名
<xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config">
<xb:namespace>
<xb:package>jhf.test</xb:package>
</xb:namespace>
</xb:config>
可以用workshop生成ForTestXmlSchema.jar文件。很方便
用来测试的文件:
TestMySchema.java
package test;
import com.bea.xml.XmlOptions;
import java.util.ArrayList;
import java.util.List;
import jhf.test.TestDocument;
import jhf.test.TestType;
public class TestMySchema
{
private TestDocument testDoc;
TestMySchema() {
init();
}
private void init() {
testDoc = TestDocument.Factory.newInstance();
TestType testT= testDoc.addNewTest();
TestType.Node1.Enum enNode1 = TestType.Node1.Enum.forString("1");
TestType.Node2.Enum enNode2 = TestType.Node2.Enum.forString("qq");
testT.setNode1(enNode1);
testT.setNode2(enNode2);
testT.setNode3("ss");
testT.setNode4("111111111111");
testT.setNode5("200211122412");
testT.setNode6(9999.9);
testT.setNode7("12");
testT.setNode8("b");
testT.setNode9("A");
testT.setNode10("");
}
private List validate() {
List errors = new ArrayList();
XmlOptions xmlOptions = new XmlOptions();
xmlOptions.setErrorListener(errors);
testDoc.validate(xmlOptions);
return errors;
}
private String getFormatXml() {
return testDoc.toString();
}
private String getUnFormatXml() {
return testDoc.xmlText();
}
/**
* @param args
*/
public static void main(String[] args) {
TestMySchema testSchema = new TestMySchema();
List errors = testSchema.validate();
if(errors != null) {
for(int i=0; i<errors.size(); i++) {
System.out.println(errors.get(i));
}
}
System.out.println(testSchema.getFormatXml());
}
}
学习xml schema后,写点东西
最新推荐文章于 2021-12-30 20:11:03 发布