我有一些像这样的简单 XML ......
<?xml version="1.0" encoding="UTF-8"?>
<root>
<sentence>
<word1>The</word1>
<word2>cat</word2>
<word3>sat</word3>
<word4>on</word4>
<word5>the</word5>
<word6>mat</word6>
</sentence>
<sentence>
<word1>The</word1>
<word2>quick</word2>
<word3>brown</word3>
<word4>fox</word4>
<word5>did</word5>
<word6>nothing</word6>
</sentence>
</root>
我想要做的是用 XSLT 处理这个来创建一个句子,就像这个 The~cat~sat~on~the~mat
(这是我最终想要做的一个简化示例,这只是现在的一个绊脚石)。
我的 XSLT 看起来像这样;
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="no" />
<xsl:template match="text()[not(string-length(normalize-space()))]"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:text>
</xsl:text>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="/root/sentence">
<xsl:apply-templates />
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="word1">
<xsl:value-of select="text()" />
~
</xsl:template>
<xsl:template match="word2">
<xsl:value-of select="text()" />
~
</xsl:template>
<xsl:template match="word3">
<xsl:value-of select="text()" />
~
</xsl:template>
<xsl:template match="word4">
<xsl:value-of select="text()" />
~
</xsl:template>
<xsl:template match="word5">
<xsl:value-of select="text()" />
~
</xsl:template>
<xsl:template match="word6">
<xsl:value-of select="text()" />
~
</xsl:template>
</xsl:stylesheet>
如果我在 XML 上运行样式表,我会在它自己的一行上得到每个单词,然后在下一行得到一个 tilda,就像这样
<?xml version="1.0" encoding="UTF-8"?>
The
~
cat
~
sat
~
on
~
the
~
mat
~
The
~
quick
~
brown
~
fox
~
did
~
nothing
~
如果我删除我得到的 tildas
Thecatsatonthemat
然后在我看来(而且我对这个 XSLT 东西很陌生),在新行中包含一个 tilda 正在强制新行。
那么,我怎样才能强制模板的输出都在一行上呢?(我的最终要求是对元素进行更多格式化,并用空格来填充元素 - 我稍后会谈到)。
感谢期待