Yeni bir XSD almak için birkaç şablon kullanarak büyük bir XSD I işlemim var. Son adımlardan birinde, xsdresult değişkeninde yakalanan xml'nin (aslında bir XSD) uzunluğunu belirlemek istiyorum.xml yapısının dize uzunluğu
Dize uzunluğu işlevini kullanarak xsdresult değişken uzunluğuna uymayan garip bir uzunluk görüyorum. Dize/xsd'nin boyutu 52000 karakterden fazladır ama ben Uzunluk: 9862'yi görüyorum Ne yanlış yapıyorum? string-length()
için
<!-- 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>
...
Muhtemelen, "dize uzunluğu", tüm metin() 'düğümlerinin uzunluklarının toplamını döndürür ve XSD'nizin tüm öğelerinin ve özniteliklerinin karakterlerini hariç tutar. – zx485
Değişkeniniz, sonuç olarak bir ağaç parçası (XSLT 1.0) veya düğümlerin geçici bir belgesi (XSLT 2.0) değeridir, ancak beklediğiniz gibi bir şema serileştirmez. –
Olası kopyası [XSLT: XML Düğümünü String'e dönüştürme] (http://stackoverflow.com/questions/6696382/xslt-how-to-convert-xml-node-to-string) – kjhughes