gpt4 book ai didi

xslt - 获取属性名称并在 xslt 中进行一些操作

转载 作者:行者123 更新时间:2023-12-03 16:12:32 26 4
gpt4 key购买 nike

我必须获取属性名称并根据 XSLT 中的名称进行一些操作。

来源:

<group  xlink:type="simple" xlink:href="XXX" xlink:title="sectionHeader_1" xmlns:xlink="http://www.w3.org/1999/xlink"></group>
<group xlink:type="simple" xlink:href="YYY" xlink:title="BodyParagraph_1" xmlns:xlink="http://www.w3.org/1999/xlink"></group>
<group xlink:type="simple" xlink:href="ZZZ" xlink:title="sectionHeader_2" xmlns:xlink="http://www.w3.org/1999/xlink"></group>
<group xlink:type="simple" xlink:href="AAA" xlink:title="sectionHeader_3" xmlns:xlink="http://www.w3.org/1999/xlink"></group>
<group xlink:type="simple" xlink:href="BBB" xlink:title="BodyParagraph_2" xmlns:xlink="http://www.w3.org/1999/xlink"></group>
<group xlink:type="simple" xlink:href="BBB" xlink:title="ConditionalText_2" xmlns:xlink="http://www.w3.org/1999/xlink"></group>

我必须得到属性 xlink:title属性并检查以下内容:
  • 当属性 xlink:title 包含字符串 sectionHeader 时,我需要做一些操作。
  • 当属性 xlink:title 包含字符串 BodyParagraph 时,我需要进行一些操作。
  • 当属性 xlink:title 包含字符串 ConditionalText 时,我需要进行一些操作。

  • 任何人都可以解释如何做到这一点?

    最佳答案

    使用模板和模式匹配以最小化或完全消除显式条件指令符合 XSLT 的精神。

    这是如何做到的 :

    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xlink="http://www.w3.org/1999/xlink">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="group">
    <xsl:apply-templates select="@xlink:title"/>
    </xsl:template>

    <xsl:template match="@xlink:title[contains(., 'sectionHeader')]">
    Found @xlink:title containing "sectionHeader"
    </xsl:template>

    <xsl:template match="@xlink:title[contains(., 'BodyParagraph')]">
    Found @xlink:title containing "BodyParagraph"
    </xsl:template>

    <xsl:template match="@xlink:title[contains(., 'ConditionalText')]">
    Found @xlink:title containing "ConditionalText"
    </xsl:template>
    </xsl:stylesheet>

    当此转换应用于提供的 XML 片段时 (转换为格式良好的 XML 文档):
    <t>
    <group xlink:type="simple" xlink:href="XXX" xlink:title="sectionHeader_1" xmlns:xlink="http://www.w3.org/1999/xlink"></group>
    <group xlink:type="simple" xlink:href="YYY" xlink:title="BodyParagraph_1" xmlns:xlink="http://www.w3.org/1999/xlink"></group>
    <group xlink:type="simple" xlink:href="ZZZ" xlink:title="sectionHeader_2" xmlns:xlink="http://www.w3.org/1999/xlink"></group>
    <group xlink:type="simple" xlink:href="AAA" xlink:title="sectionHeader_3" xmlns:xlink="http://www.w3.org/1999/xlink"></group>
    <group xlink:type="simple" xlink:href="BBB" xlink:title="BodyParagraph_2" xmlns:xlink="http://www.w3.org/1999/xlink"></group>
    <group xlink:type="simple" xlink:href="BBB" xlink:title="ConditionalText_2" xmlns:xlink="http://www.w3.org/1999/xlink"></group>
    </t>

    产生了想要的结果(在每种情况下都做了一些事情) :
       Found @xlink:title containing "sectionHeader"

    Found @xlink:title containing "BodyParagraph"

    Found @xlink:title containing "sectionHeader"

    Found @xlink:title containing "sectionHeader"

    Found @xlink:title containing "BodyParagraph"

    Found @xlink:title containing "ConditionalText"

    请注意 : 您可以考虑使用 starts-with()函数而不是 contains() .

    关于xslt - 获取属性名称并在 xslt 中进行一些操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10257313/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com