1

タイプ C:/Documents and Settings/Saxon/output1/index.html?value=65abc の URL があります。

ここで、xslt の URL '65abc' からこの部分をフェッチする必要があります。リンクをクリックすると、前のページからこの値を取得しています。

それを行う方法のアイデアはありますか?

4

1 に答える 1

1

使用

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, '='))],
   '='
   )

完全なコード例は次のとおりです。

  1. 最も単純なケース

。。。

<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&amp;x=1&amp;y=2'"/>
  <xsl:param name="pQName" select="'x'"/>   

 <xsl:template match="node()|@*">
     <xsl:sequence select=
     "substring-after
       (tokenize(substring-after($pPath, '?'), '&amp;')
             [starts-with(., concat($pQName, '='))],
      '='
      )"/>
 </xsl:template>
</xsl:stylesheet>

必要な文字列(という名前のクエリ文字列パラメータの値x)が生成されます:

1
于 2012-06-08T12:16:42.523 に答える