指定したパスにノードが存在するかどうかを確認するにはどうすればよいですか? たとえば、次の xml があります。
<?xml version="1.0" encoding="UTF-8"?>
<books>
<bookgroup name="group1">
<book name="BookName1"/>
<book name="BookName2"/>
<book name="BookName3"/>
<book name="BookName4"/>
<book name="BookName5"/>
</bookgroup>
<bookgroup name="group2">
<book name="BookName6"/>
<book name="BookName7"/>
</bookgroup>
<selected>
<book name="BookName2"/>
<book name="BookName3"/>
</selected>
</books>
望ましい出力は、子ノード BookName2 と BookName 3 が選択されたタグに存在するため true を返し、その子が選択されたタグに存在しないため false を返すことです。
これは私が試したことです:
<xsl:template name="IsChildExist">
<xsl:param name="bookGroupName"/>
<xsl:variable name="isExist">
<xsl:for-each select="//bookgoup[@NAME=$bookGroupName]/book">
<xsl:variable name="childNode" select="./@name"/>
<xsl:choose>
<xsl:when test="count(//selected/book[@name=$childNode])>0">
<xsl:value-of select="true()"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="false()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:variable>
<xsl:value-of select="$isExist"/>
</xsl:template>
しかし、for-each ループのブレークでまだ戦っています。
前もって感謝します。