代码之家  ›  专栏  ›  技术社区  ›  Christian Gudrich

XSLT-如果搜索值存在多次-仅首先返回

  •  0
  • Christian Gudrich  · 技术社区  · 7 年前

    我需要(再次)你的专业知识来解决我的XSLT问题。

    我创建了一个良好的XSLT来将一种(支付)XML格式转换为另一种。我使用Excel作为UI,Saxon9he使用Excel和XSLT文件中的UI输入值来转换文件。

    有(两)四个搜索条件:

    • (IBAN 1和金额1)
    • (IBAN 2和金额2)

    一切正常,直到其中一个搜索值在输入文件中存在多次。

    输入文件:www.gudrich。com/xslt/input。xml

    http://www.gudrich.com/xslt/transform.xslt

    要创建此输出文件,搜索参数为:

    • IBAN 1:DE02702203005005507393
    • 金额1:19,00
    • IBAN 2:DE13702203005003963537
    • 金额2:804.07

    http://www.gudrich.com/xslt/output.xml

    我只想将第一个找到的结果传输到输出文件,第二个结果必须忽略。

    实际需要两个已发现(IBAN)事务。

    我还使用Xpath和[1]尝试了这个建议。 但结果是,将只考虑两个搜索参数中的第一个元素。

    谢谢&BR 基督教的

    2 回复  |  直到 7 年前
        1
  •  0
  •   Hobbes    7 年前

    <xsl:if test="(number($betrag)=number($_find_amount2) and $iban=$_find_iban2)">
    

    将其约束到 $iban=$_find_iban2 在XML中,您需要以下内容:

    <xsl:if test="(number($betrag)=number($_find_amount2) and $iban=$_find_iban2) and not(preceding::myTxNS:OrgnlTxRef/myTxNS:DbtrAcct/myTxNS:Id/myTxNS:IBAN = $_find_iban2)">
    
        2
  •  0
  •   Carlos    7 年前

    您始终可以使用xslt和xpath选择第一个occurrence,只需在xpath表达式的末尾添加“[1]”。

    您可以阅读本教程以更好地理解 https://www.w3schools.com/xml/xpath_syntax.asp