获取父节点 XSLT 的属性

Posted

技术标签:

【中文标题】获取父节点 XSLT 的属性【英文标题】:Get attributes of a parent node XSLT 【发布时间】:2021-10-21 06:50:30 【问题描述】:

我想有条件地格式化 Apache FOP 中的 URL,为此,我想检查 property 是否属于 HYPERLINK 类型,然后应用条件格式并将其转换为 URL。

下面是我的 XML

<properties>
    <property type="CUSTOM" id="150" key="localizedfield">
        <name>Localized Text</name>
        <value>Test</value>
    </property>
    <property type="CUSTOM" id="149" key="textareafield">
        <name>Textarea</name>
        <value>My longer default text.</value>
    </property>
    <property type="HYPERLINK" key="ASSET_LINK">
        <name>Asset Link</name>
        <value>Test=https://test.com</value>
    </property>
    <property type="CUSTOM" key="VALIDITY">
        <name>Asset Availability</name>
        <value>Available</value>
    </property>
</properties>

我用于转换的 XSL 如下所示

<xsl:template name="table-row">
    <xsl:for-each select="properties/property">
        <xsl:apply-templates select="."/>
    </xsl:for-each>
</xsl:template>

<xsl:template match="property">
    <fo:table-cell >
        <fo:block >
            <xsl:choose>
                <xsl:when test="<check if type is HYPERLINK>">
                    <!-- Format as hyperlink -->
                </xsl:when>
                <xsl:otherwise>
                    <!-- format as normal text -->
                </xsl:otherwise>
            </xsl:choose>
        </fo:block>
    </fo:table-cell>
</xsl:template>

xsl:when 条件下,我只得到namevalue,我怎样才能在这里获得完整的property 节点,以便检查类型属性是否为HYPERLINK,然后进行相应的格式化?

【问题讨论】:

【参考方案1】:

我想你想要

<xsl:when test="@type='HYPERLINK'">

【讨论】:

以上是关于获取父节点 XSLT 的属性的主要内容,如果未能解决你的问题,请参考以下文章

XSLT 用子节点重复父节点

XSLT 根据最大​​子节点对父节点进行排序

xslt 具有父节点的递归子节点

将属性和值填充到第4个父节点的XML文件的所有父节点

C#只查询xslt的父节点

在 XSLT 中对每个父节点下的子节点进行分组