タイプ C:/Documents and Settings/Saxon/output1/index.html?value=65abc の URL があります。
ここで、xslt の URL '65abc' からこの部分をフェッチする必要があります。リンクをクリックすると、前のページからこの値を取得しています。
それを行う方法のアイデアはありますか?
使用:
substring-after($pPath, '=')
ここで、は、トランスフォーメーションの呼び出し元から渡された、urlのような)ファイルパスの値を含む$pPath
グローバル外部への参照です。xsl:param
pPath
に複数のクエリ文字列パラメータが含まれていて、最初のパラメータの値にアクセスする場合は、次を使用します。
substring-after(substring-before(substring-after($pPath, '?'), '&'), '=')
XSLT 2.0(XPath 2.0)を使用している場合は、次を$pQName
使用して名前が付けられたquery-string-parameterの値にアクセスできます。
substring-after
(tokenize(substring-after($pPath, '?'), '&')
[starts-with(., concat($pQName, '='))],
'='
)
完全なコード例は次のとおりです。
。。。
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:param name="pPath" select=
"'C:/Documents and Settings/Saxon/output1/index.html?value=65abc'"/>
<xsl:template match="node()|@*">
<xsl:sequence select="substring-after($pPath, '=')"/>
</xsl:template>
</xsl:stylesheet>
これを任意のXMLドキュメント(使用されていない)に適用すると、目的の結果が生成されます。
65abc
.2。この変換が任意のXMLドキュメント(使用されていない)で実行される場合:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:param name="pPath" select=
"'C:/Documents and Settings/Saxon/output1/index.html?value=65abc&x=1&y=2'"/>
<xsl:param name="pQName" select="'x'"/>
<xsl:template match="node()|@*">
<xsl:sequence select=
"substring-after
(tokenize(substring-after($pPath, '?'), '&')
[starts-with(., concat($pQName, '='))],
'='
)"/>
</xsl:template>
</xsl:stylesheet>
必要な文字列(という名前のクエリ文字列パラメータの値x
)が生成されます:
1