删除 Space XSLT
Removing Space XSLT
我发现很多帖子都与我的问题有关,但解决方案不起作用。
我的输入中有很多 XML 元素,我想生成一个 KML 文件。对于 KML 描述,我使用 CDATA。在此 CDATA 中,我尝试放置一个 <img>
。
所以我的 XSL:
<xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>
<xsl:text disable-output-escaping="yes">
<p>The <a href="http://en.wikipedia.org/wiki/Fremont_Troll">Fremont Troll</a> is a large concrete sculpture <br/>
of the mythical troll who lives under the bridge.</p>
<p>The troll is holding a Volkswagen bug in his hand.</p>
<img src="http://client.thomasblasig.fr/KML_images
</xsl:text>
<xsl:variable name="link_image" select="$images/circuits/circuit[@id=$id_circuit]/image[@etape=$id_etape]/lien"></xsl:variable>
<xsl:variable name="new_link_image" select="replace($link_image, './', '/')"></xsl:variable>
<xsl:value-of select="translate($new_link_image, ' ', '')"></xsl:value-of>
<xsl:text disable-output-escaping="yes">
"></img>
</xsl:text>
<xsl:text disable-output-escaping="yes">]]></xsl:text>
代码产生这个结果:
<kml xmlns="http://earth.google.com/kml/2.2">
<Document>
<Placemark>
<name>Etape n° 1 : Avenue Joliot Curie</name>
<description>
<![CDATA[
<p>The <a href="http://en.wikipedia.org/wiki/Fremont_Troll">Fremont Troll</a> is a large concrete sculpture <br/> of the mythical troll who lives under the bridge.</p> <p>The troll is holding a Volkswagen bug in his hand.</p> <img src="http://client.thomasblasig.fr/KML_images /image/02.jpg "></img>
]]>
</description>
<Point>
<coordinates>-74.006393,40.714172,0</coordinates>
</Point>
</Placemark>
如您所见,我的 <xsl:text>
和 <xsl:valueof>
之间有空格。我怎样才能删除它们?
我猜你说的是空格,空格出现在输出的 img
标签中:
<img src="http://client.thomasblasig.fr/KML_images /image/02.jpg ">
如果是这种情况,导致问题的不是 xsl:text
和 xsl:value-of
之间的空格(因为 XSLT 中的纯空格节点并不重要),而是xsl:text
本身内的空格
所以,这个 xsl:text
...
<xsl:text disable-output-escaping="yes">
"></img>
</xsl:text>
...真的需要这样写:
<xsl:text disable-output-escaping="yes">"></img></xsl:text>
与第一个 xsl:text
类似,它需要这样结束...
<img src="http://client.thomasblasig.fr/KML_images</xsl:text>
请注意,您可能会考虑像这样重写 XSLT,使其具有可读性
<description>
<![CDATA[<p>The <a href="http://en.wikipedia.org/wiki/Fremont_Troll">Fremont Troll</a> is a large concrete sculpture <br/>
of the mythical troll who lives under the bridge.</p>
<p>The troll is holding a Volkswagen bug in his hand.</p>
<img src="http://client.thomasblasig.fr/KML_images]]><xsl:value-of select="translate($new_link_image, ' ', '')" /><![CDATA["></img>]]>
</description>
(这可能必须与 xsl:output
元素上的 cdata-section-elements
属性结合使用)
<xsl:output method="xml" indent="yes" cdata-section-elements="description" />
我发现很多帖子都与我的问题有关,但解决方案不起作用。
我的输入中有很多 XML 元素,我想生成一个 KML 文件。对于 KML 描述,我使用 CDATA。在此 CDATA 中,我尝试放置一个 <img>
。
所以我的 XSL:
<xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>
<xsl:text disable-output-escaping="yes">
<p>The <a href="http://en.wikipedia.org/wiki/Fremont_Troll">Fremont Troll</a> is a large concrete sculpture <br/>
of the mythical troll who lives under the bridge.</p>
<p>The troll is holding a Volkswagen bug in his hand.</p>
<img src="http://client.thomasblasig.fr/KML_images
</xsl:text>
<xsl:variable name="link_image" select="$images/circuits/circuit[@id=$id_circuit]/image[@etape=$id_etape]/lien"></xsl:variable>
<xsl:variable name="new_link_image" select="replace($link_image, './', '/')"></xsl:variable>
<xsl:value-of select="translate($new_link_image, ' ', '')"></xsl:value-of>
<xsl:text disable-output-escaping="yes">
"></img>
</xsl:text>
<xsl:text disable-output-escaping="yes">]]></xsl:text>
代码产生这个结果:
<kml xmlns="http://earth.google.com/kml/2.2">
<Document>
<Placemark>
<name>Etape n° 1 : Avenue Joliot Curie</name>
<description>
<![CDATA[
<p>The <a href="http://en.wikipedia.org/wiki/Fremont_Troll">Fremont Troll</a> is a large concrete sculpture <br/> of the mythical troll who lives under the bridge.</p> <p>The troll is holding a Volkswagen bug in his hand.</p> <img src="http://client.thomasblasig.fr/KML_images /image/02.jpg "></img>
]]>
</description>
<Point>
<coordinates>-74.006393,40.714172,0</coordinates>
</Point>
</Placemark>
如您所见,我的 <xsl:text>
和 <xsl:valueof>
之间有空格。我怎样才能删除它们?
我猜你说的是空格,空格出现在输出的 img
标签中:
<img src="http://client.thomasblasig.fr/KML_images /image/02.jpg ">
如果是这种情况,导致问题的不是 xsl:text
和 xsl:value-of
之间的空格(因为 XSLT 中的纯空格节点并不重要),而是xsl:text
本身内的空格
所以,这个 xsl:text
...
<xsl:text disable-output-escaping="yes">
"></img>
</xsl:text>
...真的需要这样写:
<xsl:text disable-output-escaping="yes">"></img></xsl:text>
与第一个 xsl:text
类似,它需要这样结束...
<img src="http://client.thomasblasig.fr/KML_images</xsl:text>
请注意,您可能会考虑像这样重写 XSLT,使其具有可读性
<description>
<![CDATA[<p>The <a href="http://en.wikipedia.org/wiki/Fremont_Troll">Fremont Troll</a> is a large concrete sculpture <br/>
of the mythical troll who lives under the bridge.</p>
<p>The troll is holding a Volkswagen bug in his hand.</p>
<img src="http://client.thomasblasig.fr/KML_images]]><xsl:value-of select="translate($new_link_image, ' ', '')" /><![CDATA["></img>]]>
</description>
(这可能必须与 xsl:output
元素上的 cdata-section-elements
属性结合使用)
<xsl:output method="xml" indent="yes" cdata-section-elements="description" />