代码之家  ›  专栏  ›  技术社区  ›  MartyIX

可以用通过正则表达式指定的节点名定义xml模式吗?

  •  2
  • MartyIX  · 技术社区  · 15 年前

    我知道这可能是一个与XML哲学背道而驰的问题,但仍然有可能为XML定义这样的模式:

    <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 回复  |  直到 15 年前
        1
  •  1
  •   Jens Granlund    15 年前

    我认为这不可能。

    在我看来,你有两个选择。

    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。 只为“任意节点名”内的内容创建模式,并由它们自己验证每个节点。

        2
  •  1
  •   MartyIX    15 年前