对于每个"代理"节点,我需要找到具有相同key1,key2,key3值的"stmt"元素,并输出一个"stmt"节点,其中"comm"和"prem"值相加在一起.对于该"代理"中的任何"stmt"元素,它们与基于key1,key2和key3的任何其他"stmt"元素都不匹配,我需要按原样输出它们.因此,在转换之后,第一个"代理"节点将只有两个"stmt"节点(一个求和),而第二个"代理"节点将按原样传递,因为密钥不匹配.XSLT 1.0或2.0解决方案是可以的......虽然我的样式表目前是1.0.请注意,代理节点可以具有任意数量的"stmt"元素,这些元素具有需要分组和求和的匹配键以及不需要的任何数字.
<statement>
<agency>
<stmt>
<key1>1234</key1>
<key2>ABC</key2>
<key3>15.000</key3>
<comm>75.00</comm>
<prem>100.00</prem>
</stmt>
<stmt>
<key1>1234</key1>
<key2>ABC</key2>
<key3>15.000</key3>
<comm>25.00</comm>
<prem>200.00</prem>
</stmt>
<stmt>
<key1>1234</key1>
<key2>ABC</key2>
<key3>17.50</key3>
<comm>25.00</comm>
<prem>100.00</prem>
</stmt>
</agency>
<agency>
<stmt>
<key1>5678</key1>
<key2>DEF</key2>
<key3>15.000</key3>
<comm>10.00</comm>
<prem>20.00</prem>
</stmt>
<stmt>
<key1>5678</key1>
<key2>DEF</key2>
<key3>17.000</key3>
<comm>15.00</comm>
<prem>12.00</prem>
</stmt>
</agency>
Run Code Online (Sandbox Code Playgroud)
给出如下表格编号:
ABC_12345_Q-10
Run Code Online (Sandbox Code Playgroud)
我想最终得到:
ABC12345
Run Code Online (Sandbox Code Playgroud)
所以我需要找到第二个下划线的位置
请注意,下划线之间的任何"部分"都没有标准模式或长度(因此我不能使用子字符串来简单地删除最后一部分).
xPath 2.0解决方案没问题.
给定一个使用distinct-values()函数返回不同状态列表的变量,是否有办法在for-each循环中对变量进行标记化?
<States>
<State>AL</State>
<State>AL</State>
<State>NM</State>
</States>
Run Code Online (Sandbox Code Playgroud)
以下变量返回AL和NM,但我不能使用for-each迭代它.有没有解决的办法?
<xsl:variable name="FormStates" select="distinct-values(States/State)"/>
<xsl:for-each select="$FormStates">
Run Code Online (Sandbox Code Playgroud)
XSLT 2.0好的.
给定元素:
<comments> comments
go here
</comments>
Run Code Online (Sandbox Code Playgroud)
如何删除多个前导空格字符.我不能使用规范化空间,因为我需要保留换行符等.XSLT 2.0好的.
给定一个值为的元素:
<xml_element>Distrib = SU & Prem &lt;&gt; 0</xml_element>
Run Code Online (Sandbox Code Playgroud)
我需要转入&lt;
或&gt;
转入<
或>
因为下游应用程序在整个XML文档中都需要这种格式.我也需要这个用于引号和撇号.我正在尝试XSLT 2.0中的字符映射.
<xsl:character-map name="specialchar">
<xsl:output-character character="'" string="&apos;" />
<xsl:output-character character=""" string="&quot;" />
<xsl:output-character character=">" string="&gt;" />
</xsl:character-map>
Run Code Online (Sandbox Code Playgroud)