【发布时间】: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 表达式来解决这个问题