0

如何创建条件标记,例如在下面的示例中,我想要一个或标记。两者都不能出现在 . 只有其中之一。如何创建这样的 XML 模式?

Ex:
  <tool>
     <tool_name>xyz</tool_name>
  </tool>

  or 

 <tool>
    <tool_file>xyz.xml</tool_file>
 </tool>
4

2 回答 2

1

为元素工具创建一个元素声明,它的类型是一个复杂类型,称为工具类型。这应该是一个复杂类型,其内容模型是一个 xs:choice,有两个孩子,一个 xs:element name="tool_name" 和一个 xs:element name="tool_file"。

于 2013-07-24T22:01:36.370 回答
0

在您的示例中引入了命名空间(可能比您想要的更复杂,但很好的做法):架构:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns="http://example.com/tools"
  targetNamespace="http://example.com/tools"
  elementFormDefault="qualified">

  <xsd:element name="tool">
    <xsd:complexType>
      <xsd:choice>
        <xsd:element name="tool_name" type="xsd:string" />
        <xsd:element name="tool_file" type="xsd:string" />
      </xsd:choice>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

这是有效的:

<tool xmlns="http://example.com/tools">
  <tool_name>hammer</tool_name>
</tool>

这不是:

<tool xmlns="http://example.com/tools">
  <tool_name>hammer</tool_name>
  <tool_file>hammer.png</tool_file>
</tool>
于 2013-07-24T22:28:14.087 回答