我可以将xml标记中的值限制为某个字符串加上同一节点中另一个标记的值

时间:2012-08-27 21:57:05

标签: xsd

首先,原谅我,因为我对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文件中做什么?

1 个答案:

答案 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的内容必须是一个单词后跟'/'后跟另一个单词....)