Xslt 从空元素中删除空格
请帮我做以下事情 我猜这是规范化空间函数,但不确定如何确切地使用它 1) 如何查找所有空元素并从中删除空格 例如,需要进行转换Xslt 从空元素中删除空格,xslt,space,Xslt,Space,请帮我做以下事情 我猜这是规范化空间函数,但不确定如何确切地使用它 1) 如何查找所有空元素并从中删除空格 例如,需要进行转换 <li> </li> 到 2) 如何进行更精确的变换? 查找UL中具有类“列表”的所有空LI 你好,世界 并将其转换为 <ul class="list"> <li></li> <li>Hello world!</li> </ul>
<li> </li>
到
2) 如何进行更精确的变换?
查找UL中具有类“列表”的所有空LI
- 你好,世界李>
并将其转换为
<ul class="list">
<li></li>
<li>Hello world!</li>
</ul>
- 你好,世界李>
非常感谢首先,说您的输入XML包含“带空格的空元素”是非常误导人的。以空格字符作为内容的元素根本不是空的。相反,它们包含一个文本节点作为子节点,而子节点又只包含空白字符 您可以使用XSLT元素
strip space
删除其他空元素的空白内容
例如,这只影响元素的纯空白文本节点
<li> </li>
要规范化包含除空格以外的字符的文本节点的空格,请使用normalize-space()
函数:
<xsl:template match="text()">
<xsl:value-of select="normalize-space(.)"/>
</xsl:template>
XML输入
<ul class="list">
<li> </li>
<li>Hello world!</li>
</ul>
<ul class="list">
<li/>
<li>Hello world!</li>
</ul>
<ul class="list">
<li> </li>
<li>Hello world! </li>
</ul>
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" encoding="UTF-8" indent="yes" omit-xml-declaration="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of select="normalize-space(.)"/>
</xsl:template>
</xsl:transform>
<ul class="list">
<li/>
<li>Hello world!</li>
</ul>
样式表
<ul class="list">
<li> </li>
<li>Hello world!</li>
</ul>
<ul class="list">
<li/>
<li>Hello world!</li>
</ul>
<ul class="list">
<li> </li>
<li>Hello world! </li>
</ul>
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" encoding="UTF-8" indent="yes" omit-xml-declaration="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of select="normalize-space(.)"/>
</xsl:template>
</xsl:transform>
<ul class="list">
<li/>
<li>Hello world!</li>
</ul>
XML输出
<ul class="list">
<li> </li>
<li>Hello world!</li>
</ul>
<ul class="list">
<li/>
<li>Hello world!</li>
</ul>
<ul class="list">
<li> </li>
<li>Hello world! </li>
</ul>
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" encoding="UTF-8" indent="yes" omit-xml-declaration="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of select="normalize-space(.)"/>
</xsl:template>
</xsl:transform>
<ul class="list">
<li/>
<li>Hello world!</li>
</ul>
- 你好,世界李>
xslt 1.0中存在关于修剪的问题。看看这里:@parakmiakos在我看来,您链接到的问题是关于其他东西的(例如,在Java中实现的修剪)。这个问题是关于只包含空格的XML元素的。非常(真的)感谢您提供如此详细的有用答案@用户3497585不客气。请考虑接受这个答案,如果它解决了你的问题(点击左边的嘀嗒声,让它看起来是绿色的)。例如,对您之前提出的问题也要这样做。