3 Stimmen

Verwendung von XSD zur Validierung der Knotenanzahl

Ich glaube nicht, dass das möglich ist, aber ich dachte, ich werfe es mal in den Raum. Angesichts dieser XML:

 <people count="3">
      <person>Bill</person>
      <person>Joe</person>
      <person>Susan</person>
 </people>

Ist es möglich, in einer XSD zu erzwingen, dass der Wert des Attributs @count die korrekte Anzahl der definierten Elemente ist (in diesem Fall das Element person)? Das obige Beispiel wäre natürlich korrekt und das folgende Beispiel würde nicht validiert:

 <people count="5">
      <person>Bill</person>
      <person>Joe</person>
      <person>Susan</person>
 </people>

4voto

Jon W Punkte 14908

Ich bin mir ziemlich sicher, dass XSD das nicht kann. Wenn Sie jedoch garantieren wollen, dass Ihr count-Attribut die tatsächliche Anzahl der Elemente darunter ist, kann die Ausführung eines XSLT-Stylesheets auf dem Dokument sicherstellen, dass dies wahr ist, indem der Wert gesetzt wird:

<xsl:template match="people">
   <xsl:attribute name="count">
      <xsl:value-of select="count(person)"/>
   </xsl:attibute>
   <xsl:apply-templates/>
</xsl:template>

<!-- insert your identity template here -->

0voto

Wamiq Bashir Punkte 1

Parser, die die XSD-Spezifikation 1.1 implementieren, sollten eine Assert-Funktion bereitstellen, mit der der XML-Inhalt anhand der Anzahl der Kindknoten validiert werden kann

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X