0

首先,请原谅我,因为我对 xml/xsd 完全陌生。
我的 xml 文件中的一个节点看起来像这样......

<root>
  <XmlDetails>
    <XmlName>SomeName</XmlName>
    ....
    <XmlPath>path/SomeName</XmlPath>
    ...
  </XmlDetails>
  <XmlDetails>
    ...
</root

其中 XmlPath 将包含一些序言字符串(例如“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 文件中执行的操作是否可行?

4

1 回答 1

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

于 2012-08-28T15:19:29.060 回答