用XSLT转换XML— ;如何完全删除标签?
现在,我正在使用XSLT&需要帮助。我有一个XML文件:用XSLT转换XML— ;如何完全删除标签?,xml,xslt,Xml,Xslt,现在,我正在使用XSLT&需要帮助。我有一个XML文件: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <entries> <entry> <field>1</field> </entry> <entry> <field>2</field> </entry&
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<entries>
<entry>
<field>1</field>
</entry>
<entry>
<field>2</field>
</entry>
<entry>
<field>3</field>
</entry>
<entry>
<field>4</field>
</entry>
<entry>
<field>5</field>
</entry>
</entries>
1.
2.
3.
4.
5.
我需要格式化此XML以重新发送:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<entries>
<entry field="1">
<entry field="2">
<entry field="3">
<entry field="4">
<entry field="5">
</entries>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><entries>
<entry field="1">
<entry field="2">
<entry field="3">
<entry field="4">
<entry field="5">
</entries>
但我重新录制了这个:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<entries>
<entry field="1">
<entry field="2">
<entry field="3">
<entry field="4">
<entry field="5">
</entries>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><entries>
<entry field="1">
<entry field="2">
<entry field="3">
<entry field="4">
<entry field="5">
</entries>
XSLT文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0">
<xsl:output method="xml" indent="no" encoding="UTF-8" standalone="no"/>
<xsl:template match="entries">
<entries>
<xsl:apply-templates/>
</entries>
</xsl:template>
<xsl:template match="entry">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="field">
<xsl:text disable-output-escaping="yes"><entry field="</xsl:text><xsl:apply-templates/><xsl:text disable-output-escaping="yes">"></xsl:text>
</xsl:template>
</xsl:stylesheet>
输入字段=“”
正如我们所看到的,
XSLT样式表
只是删除标记,而不删除它们,留下空间。如何完全删除标记并将第一个标记移动到下一行?否则,如何将XML转换为所需的格式?如果您确实必须输出格式错误的XML(即根本不是XML文档),那么我建议您使用文本作为输出方法,并自行设置缩进格式:
XSLT1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="entries">
<xsl:text><entries></xsl:text>
<xsl:apply-templates/>
<xsl:text> </entries></xsl:text>
</xsl:template>
<xsl:template match="entry">
<xsl:text> <entry field="</xsl:text>
<xsl:value-of select="field"/>
<xsl:text>"></xsl:text>
</xsl:template>
</xsl:stylesheet>
参赛作品>
/参赛作品>
输入字段=”
">
看起来不错,但是如何删除斜杠:&如何在标记前保存缩进?@bчbчbаbаbаbаbаbаbаbаbаbаbаbаb1072?这样做的目的是什么?很不幸,这是一项技术任务。可能吗?不可能保留标记前的缩进,同时也不可能保留仅在同一空格节点中的换行符。但是您可以插入自己的缩进。请告诉我如何使用您的一个示例在文档中插入自己的空格和缩进。当XML声明显然不是XML时,为什么要在输出中插入XML声明?你想迷惑谁?