是否可以使用正则表达式指定节点名称来定义XML模式?

时间:2010-04-24 21:31:43

标签: xml xsd

我知道这可能是一个反对XML哲学的问题,但仍然可以像这样定义XML的schemata:

<Root>
  <arbitrary-name-of-node>
   <Name></Name>
   <Position></Position>
   <!-- ... -->
  </arbitrary-name-of-node>

  <arbitrary-name-of-node>
   <Name></Name> 
   <Position></Position>
   <!-- ... -->
  </arbitrary-name-of-node>
</Root>

其中任意名称的节点匹配正则表达式[a-zA-Z0-9]?

感谢您的回答!

2 个答案:

答案 0 :(得分:1)

我认为不可能。

我看到它的方式,你有两个选择。

1。创建这样的架构,并在根类型下添加每个“任意名称节点”。

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
 xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Root">
    <xs:complexType>
      <xs:all>
        <xs:element name="arbitrary-name-of-node1" type="itemType" />
        <xs:element name="arbitrary-name-of-node2" type="itemType" />
        <xs:element name="arbitrary-name-of-node3" type="itemType" />
      </xs:all>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="itemType">
    <xs:sequence>
      <xs:element name="Name" />
      <xs:element name="Position" />
      <!--...-->
    </xs:sequence>
  </xs:complexType>
</xs:schema>

2. 仅为“任意节点名称”内的内容创建架构,并自行验证每个节点。

答案 1 :(得分:1)