Thomas J.S.: XML-Schema

Beitrag lesen

Hallo,

wenn ich ein Element im XML-File auf sich selbst referenzieren möchte, wie kann ich das im XML-Schema umsetzen?

Ich möchte gern so etwas machen können:
XML:
<Kapitel> XPath
<Kapitel> XPath Navigation </Kapitel>
<Kapitel> XPath Funktionen </Kapitel>
</Kapitel>
<Kapitel>XSLT</Kapitel>

Zusätzlich was Thomas gesagt hat - wobei ich seine Meinung was "solche Strukturen" angeht insofern nicht teile, dass man in diesem Fall gar nicht von Struktur sprechen kann - kannst du dein Vorhaben so verwirklichen:
(kapitel muss dabei als globales Elemente deklariert werden)

<xsd:element name="kapitel">
 <xsd:complexType mixed="true">
  <xsd:sequence minOccurs="0" maxOccurs="unbounded">
   <xsd:element ref="kapitel" />
  </xsd:sequence>
 </xsd:complexType>
</xsd:element>

Damit sind dann Sachen wie:
<kapitel>XPath
 <kapitel>XPath Navigation</kapitel>
 <kapitel>XPath Funktionen
  <kapitel>XPath Patterns</kapitel>
 </kapitel>
</kapitel>
<kapitel>XSLT</kapitel>

möglich.

so dass dann folgendes in HTML ausgegeben werden kann:

  1. XPath
    1.1 XPath Navigation
    1.2 XPath Funktionen
  2. XSLT

Da wirst du dann paar Probleme haben und den Entwickler des XMLs zum Teufel wünschen. Sowas wie ein:
<xsl:template match="kapitel">
  <xsl:number level="multiple" format="1.1.1."/>&#160;<xsl:value-of select="current()/text()"/>
  <br />
  <xsl:apply-templates select="kapitel" />
 </xsl:template>
ist leicht, aber wenn du dann mehrere Texte hat und nicht alles nur der Titel ist hast du schon das erste Problem.

Grüße
Thomas