【问题标题】:xml - elements with same name but different typexml - 同名但类型不同的元素
【发布时间】:2016-03-09 11:35:59
【问题描述】:

理想情况下,我希望能够在 complexType 的不同元素中使用相同的子元素名称。结果是一个测验目录。一些子元素也是 complexType。这样的事情可能吗? 这就是我目前所拥有的:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">


<xs:element name="catalog"/>

<xs:complexType name="textint">
    <xs:sequence>
        <xs:element name="s" type="xs:string"/>
        <xs:element name="i" type="xs:int"/>
        <xs:element name="s" type="xs:string"/>
    </xs:sequence>
</xs:complexType>


<xs:complexType mixed="true" name="inttext">
    <xs:sequence>
        <xs:element name="i" type="xs:int"/>
        <xs:element name="s" type="xs:string"/>
        <xs:element name="i" type="xs:int"/>
        <xs:element name="s" type="xs:string"/>
    </xs:sequence>
</xs:complexType>




<xs:element name="Qstr">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="text" type="xs:string"/>
            <xs:element name="a" type="xs:string"/>
            <xs:element name="b" type="xs:string"/>
            <xs:element name="c" type="xs:string"/>
            <xs:element name="d" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>





<xs:element name="Qfl">
    <xs:complexType mixed="true">
        <xs:sequence>
            <xs:element name="text" type="textint" />
            <xs:element name="a" type="xs:int"/>
            <xs:element name="b" type="xs:float"/>
            <xs:element name="c" type="xs:int"/>
            <xs:element name="d" type="xs:int"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>




<xs:element name="Qinttext">
    <xs:complexType mixed="true">
        <xs:sequence>
            <xs:element name="text" type="xs:inttext"/>
            <xs:element name="a" type="xs:int"/>
            <xs:element name="b" type="xs:int"/>
            <xs:element name="c" type="xs:int"/>
            <xs:element name="d" type="xs:int"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>




<xs:element name="Qtextint">
    <xs:complexType mixed="true">
        <xs:sequence>   
            <xs:element name="text" type="xs:textint"/>
            <xs:element name="a" type="xs:textint"/>
            <xs:element name="b" type="xs:int"/>
            <xs:element name="c" type="xs:int"/>
            <xs:element name="d" type="xs:textint"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>



</xs:schema>

<?xml version="1.0" encoding="UTF-8"?>

<catalog>

    <Qstr>
        <text>Welcher Mechanismus kann unter Unix zur Kommunikation über das Netzwerk verwendet werden?</text>
        <a>Sockets</a>
        <b>Message Queues</b>
        <c>Pipes</c>
        <d>Semaphore</d>
    </Qstr>

    <Qstr>
        <text>Die Hauptstadt von Italien ist:</text>
        <a>Rom</a>
        <b>Athen</b>
        <c>Bonn</c>
        <d>Madrid</d>
    </Qstr>

    <Qfl>
        <text>Die Quadratwurzel von 100 ist:</text>
        <a>10</a>
        <b>2,76</b>
        <c>5</c>
        <d>1</d>
    </Qfl>

    <Qinttext>
        <text>1+1 = ?</text>
        <a>2</a>
        <b>1</b>
        <c>3</c>
        <d>4</d>
    </Qinttext>

    <Qtextint>
        <text>Spinnen...</text>
        <a>...haben 8 Beine</a>
        <b>...sind Insekten</b>
        <c>...sind Vögel</c>
        <d>...werden bis zu 100 Jahre alt</d>
    </Qtextint>

    <Qstr>
        <text>Die Hauptstadt von Spanien ist:</text>
        <a>Madrid</a>
        <b>Barcelona</b>
        <c>Rom</c>
        <d>London</d>
    </Qstr>

</catalog>

【问题讨论】:

    标签: xml


    【解决方案1】:

    是的,完全有可能。作为元素 X 的子元素的元素 A 不必与作为元素 Y 的子元素的元素 A 具有相同的类型。为此,您需要在复杂类型中使用局部元素声明(&lt;xs:element name="A" type="t"&gt; 而不是 &lt;xs:element ref="A"/&gt;)定义 X 和 Y 的类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-07
      相关资源
      最近更新 更多