У меня есть XML, как это:Не удается получить правильный вывод XSLT
<?xml version="1.0" encoding="UTF-8"?>
<Section>
<Chapter>
<nametable>
<namerow>
<namecell stuff="1">
<entity>A</entity>
</namecell>
<namecell stuff="2">
<entity>B</entity>
</namecell>
</namerow>
</nametable>
</Chapter>
</Section>
Мой XSLT, как это:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:apply-templates select="Section/Chapter//nametable"/>
</xsl:template>
<xsl:template match="nametable">
<xsl:for-each select="./namerow">
<xsl:value-of select="./namecell/@stuff"/>
<xsl:value-of select="./namecell" />
</xsl:for-each>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
Чет я получаю выход в таком порядке 1 2 А. Б., я думал, что собираюсь получить 1 A 2 B.
Не знаете, почему это?.
ТИА,
Джон
oh! Вот ответ :) +1 –
Dimitri: Что это за действительно делать?. –
JohnX
@JohnX: ' ' выводит как текстовые узлы строковые значения каждого атрибута 'stuff' и' entity' child каждого 'namecell 'child текущего узла. Здесь я использую Xpath * union * operator '|'. Такой союз на этапе местоположения возможен только в XPath 2.0 - синтаксически незаконно в XPath 1.0. –