У меня есть XML-файл, который выглядит следующим образом:
<args>
<sometag value="abc" />
<anothertag value="def" />
<atag value="blah" />
</args>
имейте в виду, что имена тегов в аргументах могут быть названы как угодно (я не знаю заранее)
Теперь у меня есть этот xml-файл, который хранится в переменной $ data, которую я загрузил с помощью вызова document () в таблице стилей xslt (это не данные для файла xslt)
Я хочу взять эти данные и произвести следующий вывод:
sometag = а & anothertag = Защита & ATAG = ли
так (очень упрощенная версия выглядит так:
<xsl:template>
<xsl:variable name="data" select="document('/path/to/xml')" />
<xsl:call-template name='build_string'>
<xsl:with-param name='data' select='$data' />
</xsl:call-template>
</xsl:template>
<!-- here is where i need help -->
<xsl:template name="build_string">
<xsl:param name='data'>
<xsl:value-of select='name($data/.)' />=<xsl:value-of select='$data/@value' />
<xsl:if test='$data/following-sibling::node()'>
<xsl:text>&</xsl:text>
<xsl:call-template name="build_str">
<xsl:with-param name="data" select='$nodes/following-sibling::node()' />
</xsl:call-template>
</xsl:if>
</xsl:template>
Это почти работает, но также печатает текстовые узлы из входного файла, и я не хочу сопоставлять текстовые узлы ..