1

私のxsl変数の値は次のとおりです

<xsl:variable name="url">
        <xsl:value-of select="'http://1.2.34.4:70/Anything/uri'"/>
      </xsl:variable>

IPアドレスとポートの組み合わせの部分を名前(abcd.com)に置き換えてから、別の変数に格納する必要があります。したがって、変数の値は「http://abcd.com/Anything/uri」になります。これどうやってするの。正規表現を使用する必要がありますか?変数urlはhttpsで始めることもでき、さらにuriには任意の数のosスラッシュを含めることができます。つまり、/ Anything / uriの代わりに、/uriまたは/Anything / other/uriを含めることができます。

4

1 に答える 1

1

このXSLT1.0変換:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>

 <xsl:variable name="vReplacement" select="'abcd.com'"/>

 <xsl:template match="/">
     <xsl:variable name="vUrl" select="'http://1.2.34.4:70/Anything/uri'"/>

     <xsl:variable name="vReplaced">
       <xsl:value-of select="concat(substring-before($vUrl,'//'), '//')"/>
       <xsl:value-of select="concat($vReplacement, '/')"/>
       <xsl:value-of select="substring-after(substring-after($vUrl,'//'),'/')"/>
     </xsl:variable>

     "<xsl:copy-of select="$vReplaced"/>"
 </xsl:template>
</xsl:stylesheet>

XMLドキュメント(未使用)に適用すると、変数$vReplacedを必要な正しい値に設定し、その内容を出力にコピーします

"http://abcd.com/Anything/uri"

説明substring-before(): 、、substring-after()およびの適切な使用concat()

于 2012-05-16T12:18:11.477 に答える