PHPでネイティブXSLライブラリを使用する。 exslt:node-setによって毎回呼び出さなくても、変数内でノード値を取得することは可能ですか?長くて醜いです。
<xsl:variable name="mydata">
<foo>1</foo>
<bar>2</bar>
</xsl:variable>
<!-- How currently being done -->
<xsl:value-of select="exslt:node-set($mydata)/foo" />
<!-- I want to be able to do this -->
<xsl:value-of select="$mydata/foo" />
回答:
回答№1は6<xsl:variable name="mydata"> <foo>1</foo> <bar>2</bar> </xsl:variable> <!-- How currently being done --> <xsl:value-of select="exslt:node-set($mydata)/foo" /> <!-- I want to be able to do this --> <xsl:value-of select="$mydata/foo" />
変数の内容が静的に定義されている場合は、 は 可能 を使用せずにXPath式からアクセスする xxx:node-set()
拡張機能。
例:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="mydata">
<foo>1</foo>
<bar>2</bar>
</xsl:variable>
<xsl:template match="/">
<xsl:value-of select=
"document("")/*/xsl:variable[@name="mydata"]/bar"/>
</xsl:template>
</xsl:stylesheet>
この変換が任意のXML文書(使用されていない)に適用されると、必要な正しい結果が生成されます:
2
回答№2の場合は0
電話することは可能です node-set
一度だけ。変数をノードセット型に変換する:
<!-- do it once at the beginning -->
<xsl:variable name="mydatans" select="exslt:node-set($mydata)" />
<!-- anytime you need: -->
<xsl:value-of select="$mydatans/foo" />