如何在 XSLT 中引用包含嵌套 XML 的变量

问题描述 投票:0回答:1

我想引用我在 XSLT 文件中定义的变量的更深 XML 级别。但是,当我尝试使用 XSLT 转换 XSD 时,它总是说我的样式表无效。仅当我在没有注释部分的情况下引用 de $descriptions 时,它才会发生转换,但随后我会得到该变量的所有描述。是否可以引用变量中的元素?

(我实际上并不需要注释[1],而是需要一个更困难的公式来找到正确的注释,但这个公式效果不佳。)

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"     xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">

<xsl:variable name="descriptions">
    <annotations>
        <annotation element="Element1">Description for Element1</annotation>
        <annotation element="Element2">Description for Element2</annotation>
        <annotation element="Element3">Description for Element3</annotation>
    </annotations>
</xsl:variable>


<xsl:template match="xs:element">
<xsl:copy>
    <xsl:apply-templates select="@*"/>
        <xsl:variable name="description"     select="$descriptions/annotations/annotation[1]"/>

我尝试过我的问题是否在命名空间内,但我真的找不到任何东西来解决甚至帮助它。

xml variables xslt
1个回答
0
投票

使用 XSLT 1.0,您可以使用带有空 URI 的

document()
函数来让样式表将自身加载为 XML 文档(XSLT 是 XML),然后使用指向变量的 XPath 并寻址所需的内容:

<xsl:variable name="description" select="document('')/xsl:stylesheet/xsl:variable[@name='descriptions']/annotations/annotation[1]"/>
© www.soinside.com 2019 - 2024. All rights reserved.