我的XML看起来像
<?xml version="1.0"?>
<ROWSET>
<ROW>
<AAA_ID>43238</AAA_ID>
<BBB_ID>9</BBB_ID>
<CCC_COURIER>2</CCC_COURIER>
<CCC_FAX>33.44</CCC_FAX>
<CCC_COFFEE>9</CCC_COFFEE>
<CCC_MARSBARS>3000.43</CCC_MARSBARS>
</ROW>
<ROW>
<AAA_ID>43238</AAA_ID>
<BBB_ID>10</BBB_ID>
</ROW>
<ROW>
<AAA_ID>43238</AAA_ID>
<BBB_ID>11</BBB_ID>
</ROW>
<ROW>
<AAA_ID>43238</AAA_ID>
<BBB_ID>12</BBB_ID>
<CCC_MISC>5</CCC_MISC>
</ROW>
</ROWSET>
我需要对其进行修改,使其最终看起来像
<?xml version="1.0"?>
<ROWSET>
<ROW>
<AAA_ID>43238</AAA_ID>
<BBB_ID>9</BBB_ID>
<CCC>
<CODE>COURIER</CODE>
<AMOUNT>2</AMOUNT>
</CCC>
<CCC>
<CODE>FAX</CODE>
<AMOUNT>33.44</AMOUNT>
</CCC>
<CCC>
<CODE>COFFEE</CODE>
<AMOUNT>9</AMOUNT>
</CCC>
<CCC>
<CODE>MARSBARS</CODE>
<AMOUNT>3000.34</AMOUNT>
</CCC>
</ROW>
<ROW>
<AAA_ID>43238</AAA_ID>
<BBB_ID>10</BBB_ID>
</ROW>
<ROW>
<AAA_ID>43238</AAA_ID>
<BBB_ID>11</BBB_ID>
</ROW>
<ROW>
<AAA_ID>43238</AAA_ID>
<BBB_ID>12</BBB_ID>
<CCC>
<CODE>MISC</CODE>
<AMOUNT>5</AMOUNT>
</CCC>
</ROW>
</ROWSET>
现在我有ZERO XSL经验,但我的表现并不是太糟糕但是我最大的绊脚石是如何拆分CCC _ ????节点进入单个节点并放入????代码值进入它自己的节点?
最迫切地接受任何和所有帮助!
答案 0 :(得分:3)
这是非常直接的转变:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[starts-with(name(),'CCC_')]">
<CCC>
<CODE>
<xsl:value-of select="substring-after(name(),'CCC_')"/>
</CODE>
<AMOUNT>
<xsl:value-of select="."/>
</AMOUNT>
</CCC>
</xsl:template>
</xsl:stylesheet>
输出:
<ROWSET>
<ROW>
<AAA_ID>43238</AAA_ID>
<BBB_ID>9</BBB_ID>
<CCC>
<CODE>COURIER</CODE>
<AMOUNT>2</AMOUNT>
</CCC>
<CCC>
<CODE>FAX</CODE>
<AMOUNT>33.44</AMOUNT>
</CCC>
<CCC>
<CODE>COFFEE</CODE>
<AMOUNT>9</AMOUNT>
</CCC>
<CCC>
<CODE>MARSBARS</CODE>
<AMOUNT>3000.43</AMOUNT>
</CCC>
</ROW>
<ROW>
<AAA_ID>43238</AAA_ID>
<BBB_ID>10</BBB_ID>
</ROW>
<ROW>
<AAA_ID>43238</AAA_ID>
<BBB_ID>11</BBB_ID>
</ROW>
<ROW>
<AAA_ID>43238</AAA_ID>
<BBB_ID>12</BBB_ID>
<CCC>
<CODE>MISC</CODE>
<AMOUNT>5</AMOUNT>
</CCC>
</ROW>
</ROWSET>
注意:按原样复制输入的标识规则。覆盖名称以“CCC _”开头的元素的标识规则。
答案 1 :(得分:0)
可以使用starts-with()
和substring()
XPath functions将节点name()
分割成碎片。