2010-08-24 51 views
0

嗨如何以下空元素标记使用如何使用XSLT

<LIST_R7P1_1> 
<R7P1_1> 
    <ORIG_EXP_PRE_CONV /> 
    <EXP_AFT_CONV /> 
    <GUARANTEE_AMOUNT /> 
    <CREDIT_DER /> 
</R7P1_1> 
</LIST_R7P1_1> 

转换下面的XML的格式如下XSLT

<LIST_R7P1_1> 
<R7P1_1> 
    <ORIG_EXP_PRE_CONV >0<ORIG_EXP_PRE_CONV /> 
    <EXP_AFT_CONV >0<EXP_AFT_CONV /> 
    <GUARANTEE_AMOUNT >0<GUARANTEE_AMOUNT /> 
    <CREDIT_DER >0<CREDIT_DER /> 
</R7P1_1> 
</LIST_R7P1_1> 
分配在XML值空元素标签(自我封闭的元素)
+0

到目前为止您得到了什么? – Oded 2010-08-24 15:49:23

+0

@ user429727:Conceptualy,这个'''的含义与这个''相同。您是否希望将这两种空白元素转换为''? – 2010-08-24 18:44:13

+0

是的,其实我正在添加一些元素和总和是在这组元素中的空元素,我得到的总和为空值。我正在考虑是否将转换为获取元素的总和对我来说很容易 – user429727 2010-08-25 06:31:10

回答

0

因为你没有发布任何你自己的代码(即你已经尝试过),我会告诉你如何解决这个问题,而不给你的代码:谷歌“XSL身份转换”,然后添加一些特定的模板为您想要更改的标签。在添加文本子节点时,特定模板需要“复制”输入节点及其属性。

+0

实际上,我正在添加一些元素,并且sum是那些元素集中的空元素,总和。我想如果我将转换为,那么获取元素的总和对我来说很容易。如果您知道任何其他流程,请与我分享 – user429727 2010-08-25 06:38:16

0

这个样式表:

<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="*[not(node())]"> 
     <xsl:copy>0</xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 

有了这个输入:

<LIST_R7P1_1> 
    <R7P1_1> 
     <ORIG_EXP_PRE_CONV /> 
     <EXP_AFT_CONV /> 
     <GUARANTEE_AMOUNT></GUARANTEE_AMOUNT> 
     <CREDIT_DER></CREDIT_DER> 
    </R7P1_1> 
</LIST_R7P1_1> 

输出:

<LIST_R7P1_1> 
    <R7P1_1> 
     <ORIG_EXP_PRE_CONV>0</ORIG_EXP_PRE_CONV> 
     <EXP_AFT_CONV>0</EXP_AFT_CONV> 
     <GUARANTEE_AMOUNT>0</GUARANTEE_AMOUNT> 
     <CREDIT_DER>0</CREDIT_DER> 
    </R7P1_1> 
</LIST_R7P1_1> 

但是,具有相同的输入,这个XPath expresion:

sum(/LIST_R7P1_1/R7P1_1/*/text()) 

结果:

0