【问题标题】:Adding Specific XML tags using XSLT code使用 XSLT 代码添加特定的 XML 标记
【发布时间】:2014-10-28 09:07:13
【问题描述】:

我想在 COMS 级别为每个 CDS/CD 节点添加此输入 XML 中的值。问题是我希望仅对 ID 为“A”或“B”的标签进行总和。标签“C”下的值不应在总和中计算。

   <?xml version="1.0"?>
   <root>
   <CDS>
            <CD>
                   <COMS>
                          <COMP>
                            <ID>A</ID>
                            <VAL>1.220</VAL>
                         </COMP>
                         <COMP>
                            <ID>B</ID>
                            <VAL>2.220</VAL>
                         </COMP>
                          <COMP>
                            <ID>C</ID>
                            <VAL>5.220</VAL>
                         </COMP>
                   </COMS>

            </CD>
   </CDS>
   <CDS>
            <CD>
                   <COMS>
                          <COMP>
                            <ID>A</ID>
                            <VAL>5.2</VAL>
                         </COMP>
                         <COMP>
                            <ID>B</ID>
                            <VAL>6.5</VAL>
                         </COMP>
                          <COMP>
                            <ID>C</ID>
                            <VAL>10.5</VAL>
                         </COMP>
                   </COMS>

            </CD>
    </CDS>
    <CDS>
            <CD>
                   <COMS>
                          <COMP>
                            <ID>A</ID>
                            <VAL>4.2</VAL>
                         </COMP>
                         <COMP>
                            <ID>B</ID>
                            <VAL>5.8</VAL>
                         </COMP>
                          <COMP>
                            <ID>C</ID>
                            <VAL>14.8</VAL>
                         </COMP>
                   </COMS>

            </CD>
    </CDS>

输出 XML:

    <CDS>
           <CD>
                   <COMS>
                            <COMP>
                                    <SUM_VALUE>3.44</SUM_VALUE>
                            </COMP>
                   </COMS>
          </CD>
           <CD>
                   <COMS>
                            <COMP>
                                   <SUM_VALUE>11.7</SUM_VALUE>
                            </COMP>
                  </COMS>
          </CD>
           <CD>
                   <COMS>
                              <COMP>
                                    <SUM_VALUE>10</SUM_VALUE>
                             </COMP>
                   </COMS>
          </CD>
  </CDS>        

我的 XSLT 代码只尝试对所有值求和并给出最终输出。如果有人能解释如何在 for:each 循环中为各个 comp 级别求和 xml 值,那将会很有帮助。

我最初尝试使用这行代码,但它会将所有值加起来

【问题讨论】:

  • 您是否尝试过使用内置的 sum 函数? msdn.microsoft.com/en-us/library/ms256160(v=vs.110).aspx我不知道如何用它来整理'C'
  • 内置函数 sum() 有效,但它会将所有标签加起来。我只想要'A'和'B'而不是'C'的xml标签的总和。
  • 我认为您可以使用 Jerringon 的回答中的 XPAth 表达式来解决这个问题

标签: xml xslt


【解决方案1】:

您可以在 sum 函数中指定节点过滤(我假设您当前正在使用该函数)。示例:

<xsl:value-of select="sum(COMP[ID = 'A' or ID = 'B']/VAL)"/>

【讨论】:

    猜你喜欢
    • 2021-10-14
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多