Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用XSLT为xml(自关闭元素)中的空元素标记赋值_Xml_Xslt - Fatal编程技术网

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

如何使用XSLT为xml(自关闭元素)中的空元素标记赋值,xml,xslt,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>

您好,如何在下面的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>

0
0
0
0

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

此样式表:

<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>
结果:

0

@用户429727:从概念上讲,此
与此
的含义相同。是否希望这两种空元素都转换为
0
?是的,实际上我正在添加一些元素,sum是元素集合中的空元素,我在sum中获取空值。我在想,如果我把元素的和转换为0,那么得到元素的和就很容易了。实际上,我正在添加一些元素,和是元素集合中的空元素,我在和中得到空值。我在想,如果我把这个值转换成0,那么得到元素的和对我来说就很容易了。如果您知道任何其他流程,请与我分享
<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>
sum(/LIST_R7P1_1/R7P1_1/*/text())
0