У меня есть большой процесс XSD I, используя несколько шаблонов для получения нового XSD. В одном из последних шагов я хотел бы определить длину xml (фактически XSD), который был захвачен переменной xsdresult.строка длина структуры xml
Используя функцию длины строки, я вижу странную длину, не соответствующую переменной xsdresult. Размер строки/xsd превышает 52000 символов, но я вижу Length: 9862 Что я делаю неправильно?
<!-- 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>
...
Возможно, строка 'string length 'возвращает сумму длин всех' text() 'узлов и исключает символы всех элементов и атрибутов вашего XSD. – zx485
Ваша переменная имеет в качестве значения фрагмент дерева результатов (XSLT 1.0) или временный документ (XSLT 2.0) узлов, но не сериализацию схемы, которую вы, похоже, ожидаете. –
Возможный дубликат [XSLT: как преобразовать XML-узел в строку] (http://stackoverflow.com/questions/6696382/xslt-how-to-convert-xml-node-to-string) – kjhughes