如何使用XSLT为xml(自闭元素)中的空元素标记赋值

时间:2010-08-24 15:44:38

标签: xml xslt

您好如何在以下xml中转换以下空元素标记

 <LIST_R7P1_1>
 <R7P1_1>
  <ORIG_EXP_PRE_CONV /> 
  <EXP_AFT_CONV /> 
  <GUARANTEE_AMOUNT /> 
  <CREDIT_DER /> 
 </R7P1_1>
 </LIST_R7P1_1>
使用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>

2 个答案:

答案 0 :(得分:0)

由于您没有发布任何自己的代码(即您已经尝试过的代码),我会告诉您如何在不提供代码的情况下解决问题:Google“XSL identity transform”,然后添加一些特定的模板对于要更改的标记。特定模板需要在添加文本子节点时“复制”输入节点及其属性。

答案 1 :(得分: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表达式:

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

结果:

0