2

XML スキーマで再帰要素を設計および実装しようとしていますが、一般的に XML はあまり得意ではありません。それを設計する方法についてのアイデアはありますか?

4

1 に答える 1

4

以下のモデルは、要素宣言がグローバルであり、要素定義を参照することによって再帰性が実現されるオーサリング スタイルに基づいています。

<?xml version="1.0" encoding="utf-8" ?>
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)-->
<xsd:schema targetNamespace="http://tempuri.org/XMLSchema.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="recursive">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="recursive" minOccurs="0"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>

または、型を再利用して同じことを実現することもできます。

<?xml version="1.0" encoding="utf-8" ?>
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)-->
<xsd:schema targetNamespace="http://tempuri.org/XMLSchema.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="recursive" type="Trecursive"/>
    <xsd:complexType name="Trecursive">
        <xsd:sequence>
            <xsd:element name="recursive" type="Trecursive" minOccurs="0"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>

または、その間のどこかに行くことができます:

<?xml version="1.0" encoding="utf-8" ?>
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)-->
<xsd:schema targetNamespace="http://tempuri.org/XMLSchema.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="recursive" type="Trecursive"/>
    <xsd:complexType name="Trecursive">
        <xsd:sequence>
            <xsd:element ref="recursive" minOccurs="0"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>

有効なサンプル XML:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<recursive xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/XMLSchema.xsd">
    <recursive>
        <recursive/>
    </recursive>
</recursive>
于 2012-09-26T13:38:54.817 に答える