Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to convert XML empty tag

Tags:

xml

xslt

xpath

This might sound strange but I need to convert all empty tags to a pair of open and closing tag with a carrage return in between. Thanks in advance.

From

<OBR>
<OBR_31_Lab_Ins_Typ_Id>L</OBR_31_Lab_Ins_Typ_Id>
<OBX>
<OBX_3_Ltt_Cd>N877</OBX_3_Ltt_Cd>
<OBX_5_1_Lbr_No>0</OBX_5_1_Lbr_No>
<OBX_5_2_Lbr_Tx/>
<OBX_6_Lbr_Unt_Tx/>
</OBX>
<OBX>
<OBX_3_Ltt_Cd>N878</OBX_3_Ltt_Cd>
<OBX_5_1_Lbr_No>-15</OBX_5_1_Lbr_No>
<OBX_5_2_Lbr_Tx/>
<OBX_6_Lbr_Unt_Tx/>
</OBX>
<OBR>

To

<OBR>
<OBR_31_Lab_Ins_Typ_Id>L</OBR_31_Lab_Ins_Typ_Id>
<OBX>
<OBX_3_Ltt_Cd>N877</OBX_3_Ltt_Cd>
<OBX_5_1_Lbr_No>0</OBX_5_1_Lbr_No>
<OBX_5_2_Lbr_Tx>

</OBX_5_2_Lbr_Tx>
<OBX_6_Lbr_Unt_Tx>

</OBX_6_Lbr_Unt_Tx>
</OBX>
<OBX>
<OBX_3_Ltt_Cd>N878</OBX_3_Ltt_Cd>
<OBX_5_1_Lbr_No>-15</OBX_5_1_Lbr_No>
<OBX_5_2_Lbr_Tx>

</OBX_5_2_Lbr_Tx>
<OBX_6_Lbr_Unt_Tx>

</OBX_6_Lbr_Unt_Tx>
</OBX>
<OBR>
like image 657
user1747980 Avatar asked Apr 26 '26 12:04

user1747980


1 Answers

Use:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>

  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="*[not(node())]">
    <xsl:copy>
      <xsl:text>&#13;&#10;</xsl:text>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>
like image 133
Kirill Polishchuk Avatar answered Apr 29 '26 15:04

Kirill Polishchuk



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!