我有一个模式,我想将simpleType转换为匿名simpleType。原始模式如下所示,我做了几次尝试,例如:
删除base="xxx"; 在扩展后添加simpleType; 等等..。
但最终得到了无效的架构。
问答:
提前谢谢你,
输入模式
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="test" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="test" elementFormDefault="qualified">
<xs:element name="elem1">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="simpleType1">
<xs:attribute name="att1" type="simpleType2" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:simpleType name="simpleType1">
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="5"/>
<xs:totalDigits value="18"/>
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="simpleType2">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]{3,3}"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>我的尝试结果:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="test" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="test" elementFormDefault="qualified">
<xs:element name="elem1">
<xs:complexType>
<xs:simpleContent>
<xs:extension>
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="5"/>
<xs:totalDigits value="18"/>
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:attribute name="att1" use="required"/>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]{3,3}"/>
</xs:restriction>
</xs:simpleType>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>验证表明,这是一个包含错误的无效架构,如:
元素中需要属性'base‘。 元素下不允许使用。 元素中需要属性'name‘。
发布于 2017-02-08 13:29:43
在XSD中,当声明具有受限内容和属性的元素时,不可能使用纯匿名的本地定义。
当然,您可以单独使用属性(att1)类型的本地定义,但如果还需要在elem1上声明att1,则不能使用元素的受限简单内容(elem1)的类型(simpleType1)。
https://stackoverflow.com/questions/42113791
复制相似问题