我正在尝试将文字添加到空/自闭标签。
我想将“< empty /> ”转换为“< empty> some text < / empty> ”。
这是我正在处理的xml的缩短版本:
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<attr tag="00080090" vr="PN" pos="-1" name="Referring Physician's Name" vm="0" len="0"/>
</dataset>
我想得到这个结果:
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<attr tag="00080090" vr="PN" pos="-1" name="Referring Physician's Name" vm="0" len="0">this is the inserted text</attr>
</dataset>
但我最终得到了一个未经修改的xml。如果此标记没有文本,我的匹配似乎无效。如果已经存在一些文本,它会起作用,它会替换本案例中的文本,这对我来说很好。
我的XSL(T)看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="no"/>
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="attr[@tag='00080090']/text()">
<xsl:text>this is the inserted text</xsl:text>
</xsl:template>
</xsl:stylesheet>
我使用http://xslttest.appspot.com
进行了测试任何提示?
答案 0 :(得分:3)
XSLT应该如下:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="no"/>
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="attr[@tag='00080090']">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:text>this is the inserted text</xsl:text>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>