【问题标题】:How to insert a missing element or modify an existing element?如何插入缺失元素或修改现有元素?
【发布时间】:2012-07-07 12:56:13
【问题描述】:

我正在研究必须生成的 XML 和 XSLT 动态值。

我的 XmL

<query>
     <one>testing1</one>
     <one>testing1</one>
</query>

我的输出 XML

<query>
     <one>testing1</one>
     <one>testing1</one>
     <sample>100</sample>
</query>

XSLT 我需要检查(XSL:IF)样本元素是否可以从输入 XML 如果可用 10% 我必须使用 XSLT 删除 % 那么输出将为 10。如果 XML 中没有元素(样本)它必须创建默认为 100。

我们可以在 XSLT 中做到这一点吗。

谁能帮帮我

问候 M

【问题讨论】:

    标签: xml xslt xslt-1.0


    【解决方案1】:

    这个怎么样...

    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>
    
    <xsl:template match="@*|node()">
       <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
       </xsl:copy>
    </xsl:template>
    
    <xsl:template match="/*[not(//sample)]">
       <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
         <sample>100</sample> 
       </xsl:copy>
    </xsl:template>
    
    <xsl:template match="sample">
       <xsl:copy>
        <xsl:apply-templates select="@*"/>
        <xsl:value-of select="translate(.,'%','')"/>
        <xsl:apply-templates select="*"/>
       </xsl:copy>
    </xsl:template>
    
    </xsl:stylesheet>
    

    说明

    第二个模板添加示例节点(如果不存在)。 第三个模板从现有样本中删除所有百分比符号。

    【讨论】:

    • 嗨@Sean 感谢您的回复,在 xsl 的帮助下这是可能的:如果条件我们可以做到这一点,而不是有这么多行............
    • 也许吧。但这将是尴尬和不必要的。我会让其他一些答案海报提出一个 xsl:if 替代方案。
    • @maha:使用显式 XSLT 条件指令是一种很好的做法。改为使用模板和匹配模式符合 XSLT 的精神。这个原则的好处是:可扩展性、更容易维护、可读性、健壮性、不像使用显式条件那样容易出错。 “if() then ... else ...”思维是命令式编程时代的残余——人们需要向函数式编程范式飞跃——一种释放想象力的全新思维方式—— - 充分利用 XSLT 的力量。
    • 非常感谢 Sean 和 Dimitre 我明白了。
    • 嗨,Dimitre & Sean,您能告诉我如何使用 path(XSLT) 解决上述问题,请在此处指导我。非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    相关资源
    最近更新 更多