У меня есть xsl, как показано ниже:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:nsm="http://192.137.81.132/deneme/sample.xsd"
exclude-result-prefixes="nsm">
<xsl:output method="text"/>
<xsl:param name="fieldOf">address</xsl:param>
<xsl:param name="inputId" select="concat($fieldOf,'/value')"/>
<xsl:variable name="vXpathExpression" select="concat('global/fieldset/field/', $inputId)"/>
<!-- these fields are from xml file-->
<xsl:template match="/">
<xsl:value-of select="$vXpathExpression"/>: <xsl:text/>
<xsl:for-each select="document('sample.xsd')/xs:schema/xs:complexType[@name='fieldtype']/xs:choice/child::*">
</xsl:for-each>
<xsl:call-template name="getNodeValue">
<xsl:with-param name="pExpression" select="$vXpathExpression" />
</xsl:call-template>
</xsl:template>
<xsl:template name="getNodeValue">
<xsl:param name="pExpression"/>
<xsl:param name="pCurrentNode" select="."/>
<xsl:choose>
<xsl:when test="not(contains($pExpression, '/'))">
<xsl:value-of select="$pCurrentNode/*[name()=$pExpression]"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="getNodeValue">
<xsl:with-param name="pExpression" select="substring-after($pExpression, '/')"/>
<xsl:with-param name="pCurrentNode" select="$pCurrentNode/*[name()=substring-before($pExpression, '/')]"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
В этом случае это работает.Но я не могу запустить его, когда я вызываю шаблон изнутри для каждого.Это ничего не дает, ни ошибки, ни значений.Есть ли способ решить эту проблему?Спасибо
Редактировать: Вы можете задаться вопросом, работает ли для каждого.Оно делает.Я могу получить атрибуты для каждого.