基于另一个变量的 XSLT 元素选择
XSLT element selection based on another variable
XSLT 的新手,我正在尝试使用下面的 xsl 文件,我想在其中 select 基于同一 XSL 中另一个变量的特定代码。使用 Saxon-He-10.5 版本的 jar。有人可以帮我完成这个 xsl 转换吗?我想在 output.xml
中打印 selected 代码的标题
<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xpath-default-namespace="http://test.org/test"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
xmlns:lookup="http://lookup.data"
exclude-result-prefixes="fn lookup xsl xsi">
<xsl:variable name="key1" select=""status1""/>
<xsl:output omit-xml-declaration="yes" method="xml"/>
<xsl:variable name="header">
<sections>
<code key="status1" code="123" title="STATUS1"/>
<code key="status2" code="456" title="STATUS2"/>
</sections>
</xsl:variable>
<xsl:variable name="data" select="$header/sections/code[@key="status1"]" />
<xsl:variable name="data1" select="$header/sections/code[@key=$key1]" />
<xsl:template match="/">
:<xsl:value-of select="$header" />:
:<xsl:value-of select="$data" />:
:<xsl:value-of select="$data/@title" />:
:<xsl:value-of select="$data1/@title" />:
</xsl:template>
</xsl:transform>
尝试使用命令提示符进行转换,如下所示:
java -cp saxon-he-10.5.jar net.sf.saxon.Transform Response.xml test.xsl > output.xml
设置 xpath-default-namespace
会使您的代码失败。如果您确实需要全局声明,那么您需要在本地覆盖它,如 <xsl:variable name="data" select="$header/sections/code[@key="status1"]" xpath-default-namespace=""/>
.
XSLT 的新手,我正在尝试使用下面的 xsl 文件,我想在其中 select 基于同一 XSL 中另一个变量的特定代码。使用 Saxon-He-10.5 版本的 jar。有人可以帮我完成这个 xsl 转换吗?我想在 output.xml
中打印 selected 代码的标题<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xpath-default-namespace="http://test.org/test"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
xmlns:lookup="http://lookup.data"
exclude-result-prefixes="fn lookup xsl xsi">
<xsl:variable name="key1" select=""status1""/>
<xsl:output omit-xml-declaration="yes" method="xml"/>
<xsl:variable name="header">
<sections>
<code key="status1" code="123" title="STATUS1"/>
<code key="status2" code="456" title="STATUS2"/>
</sections>
</xsl:variable>
<xsl:variable name="data" select="$header/sections/code[@key="status1"]" />
<xsl:variable name="data1" select="$header/sections/code[@key=$key1]" />
<xsl:template match="/">
:<xsl:value-of select="$header" />:
:<xsl:value-of select="$data" />:
:<xsl:value-of select="$data/@title" />:
:<xsl:value-of select="$data1/@title" />:
</xsl:template>
</xsl:transform>
尝试使用命令提示符进行转换,如下所示:
java -cp saxon-he-10.5.jar net.sf.saxon.Transform Response.xml test.xsl > output.xml
设置 xpath-default-namespace
会使您的代码失败。如果您确实需要全局声明,那么您需要在本地覆盖它,如 <xsl:variable name="data" select="$header/sections/code[@key="status1"]" xpath-default-namespace=""/>
.