Ich habe eine große XSD Ich verarbeite mehrere Vorlagen, um eine neue XSD zu bekommen. In einem der letzten Schritte möchte ich die Länge der XML (eigentlich eine XSD), die in einer Variablen xsdresult erfasst wurde, ermitteln.String-Länge einer XML-Struktur
Mit der String-Length-Funktion sehe ich eine seltsame Länge, die nicht mit der variablen Länge von xsdresult übereinstimmt. Größe der Zeichenfolge/xsd ist über 52000 Zeichen, aber ich sehe Länge: 9862 Was mache ich falsch?
<!-- Catch output in variable -->
<xsl:variable name="xsdresult">
<xsl:call-template name="start"/>
</xsl:variable>
<xsl:template name="start">
<xsl:apply-templates/>
</xsl:template>
<!-- Build required doc parts -->
<xsl:variable name="docparts">
<xsl:call-template name="builddocparts"/>
</xsl:variable>
<xsl:template name="builddocparts">
Length: <xsl:value-of select="string-length(normalize-unicode($xsdresult))"/>
</xsl:template>
...
Wahrscheinlich gibt die 'string-length' die Summe der Längen aller' text() 'Knoten zurück und schließt die Zeichen aller Elemente und Attribute Ihrer XSD aus. – zx485
Ihre Variable hat als Ergebnis ein Ergebnisbaumfragment (XSLT 1.0) oder ein temporäres Dokument (XSLT 2.0) von Knoten, aber keine Serialisierung des Schemas, das Sie zu erwarten scheinen. –
Mögliches Duplikat von [XSLT: So wandeln Sie den XML-Knoten in einen String um] (http://stackoverflow.com/questions/6696382/xslt-how-to-convert-xml-node-to-string) – kjhughes