0
次のXMLでは、最上位レベルがすべてのレベルのノードを返しています。トップレベルの祖先はいないので、なぜ私はそれが子どもになるのですか?上位レベルの先祖または自己の問題
XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<WBSs>
<WBS GUID="2">
<Name>work</Name>
<WBSs>
<WBS GUID="1">
<Name>Wall</Name>
<ParentWBS>2</ParentWBS>
</WBS>
<WBS GUID="2">
<Name>South Wall</Name>
<ParentWBS>2</ParentWBS>
</WBS>
<WBS GUID="3">
<Name>North Wall</Name>
<ParentWBS>2</ParentWBS>
</WBS>
</WBSs>
</WBS>
</WBSs>
XPATH 注:テンプレートを適用.//WBS
<xsl:variable name="wbsCode" select=".//ancestor-or-self::WBS/@GUID[1]"/>
注にある:私はすぐにノードをstrinifyと含むようにXPath式を次のXSLT命令を持っています「」。
結果
2.1.2.3
2.1
2.2
2.3
所望の結果
2.1
2.2
2.3
<xsl:variable name="WBS_ELEMENT_TABLE">
<xsl:apply-templates select=".//WBS" mode="I_WBS_ELEMENT">
<xsl:with-param name="ProjectId" select="$ProjectId"/>
</xsl:apply-templates>
</xsl:variable>
<xsl:template match="WBS" mode="I_WBS_ELEMENT">
<xsl:param name="ProjectId"/>
<xsl:variable name="wbsCode" select=".//ancestor-or-self::WBS/@GUID[1]"/>
<xsl:variable name="temp2" select="string-join(($wbsCode), '.')"/>
<WBS_ELEMENT>
<xsl:value-of select="$temp2"/>
</WBS_ELEMENT>
</xsl:template>
*テンプレートの適用... *と*の直後に... *のXSLT命令があります。あなたの問題を示す[mcve]に実数のコードを作成してください。ありがとう。 – kjhughes
これは、関連するxsltコードです...残念です。 – Jkoul
XSLTが上に追加されました...申し訳ありませんが、XPATHの問題として開始されました。 – Jkoul