首先,原谅我,因为我对xml / xsd完全陌生 我的xml文件中的节点看起来像这样......
<root>
<XmlDetails>
<XmlName>SomeName</XmlName>
....
<XmlPath>path/SomeName</XmlPath>
...
</XmlDetails>
<XmlDetails>
...
</root
其中XmlPath将包含一些prolog字符串(例如“path /”),后跟该节点的XmlName值。 有没有办法在xsd文件中强制执行此操作?
我查看了union,但我不确定如何获取XmlName元素的值。
<xs:element name="XmlPath"
<xs:simpleType>
<xs:union memberTypes="prolog epilog" />
</xs:simpleType>
</xs:element>
<xs:simpleType name="prolog">
<xs:restriction base="xs:string">
<xs:enumeration value="path/"/>
<xs:enumeration value="path2/"/>
<xs:enumeration value="path3/"/>
</xs:restriction>
</xs:simpleType>
<xs:??? name="epilog">
How to get the value of XmlName
</xs:??>
我正在尝试在xsd文件中做什么?
答案 0 :(得分:0)
根据要验证的XML文件中某些其他元素的内容,不可能在XSD中有规则。
您可以做的最好的事情是为XmlPath
的内容指定正则表达式规则,例如:
<xs:element name="XmlPath">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="\w+/\w+"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
(XmlPath
的内容必须是一个单词后跟'/'后跟另一个单词....)