从RelaxNG生成XSD并保留根元素限制,求转换指定RNG Schema
没问题,我帮你把这段Relax NG Schema转换成符合要求的W3C XSD,同时完整保留根元素的限制规则。先看转换后的代码:
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <!-- 根元素risk,包含可选的continents子元素 --> <xs:element name="risk"> <xs:complexType> <xs:sequence> <xs:element name="continents" minOccurs="0"> <xs:complexType> <xs:sequence> <!-- continent元素至少出现一次 --> <xs:element name="continent" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <!-- country元素可重复0次或多次,字符串长度1-100 --> <xs:element name="country" maxOccurs="unbounded"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="1"/> <xs:maxLength value="100"/> </xs:restriction> </xs:simpleType> </xs:element> <!-- sea元素可重复0次或多次,字符串长度1-100 --> <xs:element name="sea" maxOccurs="unbounded"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="1"/> <xs:maxLength value="100"/> </xs:restriction> </xs:simpleType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
转换说明:
- 严格保留了根元素
<risk>的结构,continents子元素设置minOccurs="0",对应RNG里的可选规则 continent元素用maxOccurs="unbounded"实现RNG中+(至少出现一次)的约束country和sea元素同样用maxOccurs="unbounded"对应RNG里的*(0次或多次重复)- 字符串长度限制直接映射为XSD的
minLength和maxLength约束,确保和原RNG规则一致
内容的提问来源于stack exchange,提问作者Qeebrato
相关产品推荐
相关产品推荐

