xsl을 사용하여 url의 경로에 속성, 변수 조합을 직접 전달하는 방법이 있습니까?xsl : 변수를 xsl 파일 경로로 전달
예 : 나는 XSL 파일 내에서 특정 플래그를 사용하려면 다음 속성과 값을 사용하고자하는
http://something.xsl?asdf=12&attribute2=1234
.
xsl을 사용하여 url의 경로에 속성, 변수 조합을 직접 전달하는 방법이 있습니까?xsl : 변수를 xsl 파일 경로로 전달
예 : 나는 XSL 파일 내에서 특정 플래그를 사용하려면 다음 속성과 값을 사용하고자하는
http://something.xsl?asdf=12&attribute2=1234
.
사용 concat()
<xsl:variable name="url" select="concat($currURL, 'flag=true')" />
그래, 당신은 단지 당신이 스타일 시트에 액세스 자신의 URI가 매개 변수에 액세스 할 수 있음을 의미 생각 &
&
으로 탈출해야합니다. XSLT2에서는 static-base-uri() 함수를 사용하여 URI에 액세스 한 다음 정규식 문자열 함수를 사용하여 쿼리 매개 변수를 추출 할 수 있습니다. XSLT1에서는 스타일 시트 매개 변수로 정보를 전달해야하며 XSLT1 스타일 시트는 소스 또는 자체의 URI에 액세스 할 수 없습니다.
여기 URL이 변환에 외부 매개 변수로 전달되는 것을 가정하면, 전체 XSLT 1.0 용액이다
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ext="http://exslt.org/common" exclude-result-prefixes="ext">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:param name="pUrl" select=
"'http://something.xsl?asdf=12&attribute2=1234'"/>
<xsl:template match="/">
<xsl:variable name="vQuery" select="substring-after($pUrl, '?')"/>
<xsl:variable name="vrtfQueryItems">
<xsl:call-template name="buildQueryItems">
<xsl:with-param name="pQuery" select="$vQuery"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="vQueryItems"
select="ext:node-set($vrtfQueryItems)/*"/>
<xsl:copy-of select="$vQueryItems"/>
</xsl:template>
<xsl:template name="buildQueryItems">
<xsl:param name="pQuery"/>
<xsl:if test=
"string-length($pQuery) > 0">
<xsl:variable name="vQuery" select="concat($pQuery, '&')"/>
<xsl:variable name="vItem" select="substring-before($vQuery, '&')"/>
<param name="{substring-before(concat($vItem, '='), '=')}">
<xsl:value-of select="substring-after($vItem, '=')"/>
</param>
<xsl:call-template name="buildQueryItems">
<xsl:with-param name="pQuery" select="substring-after($pQuery, '&')"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
이러한 변화는 임의의 XML 문서 (사용되지 않음)에인가된다
, 원하는 결과가 생성됩니다. :
<param name="asdf">12</param>
<param name="attribute2">1234</param>