1

我有一个内容类型为纯文本的 xml 文件。我想要做的是在 xsl 转换中使用第一行作为标题。它应该如何形成?我尝试使用各种术语作为分隔符,
但没有结果。输入

<contentSet>
<inlineData contenttype="text/plain" >
Et, sent luptat luptat, commy nim zzriureet vendreetue modo
dolenis ex euisis nosto et lan ullandit lum doloreet vulla
feugiam coreet, cons eleniam il ute facin veril et aliquis ad
minis et lor sum del iriure dit la feugiamcommy nostrud min ulla
</inlineData>
</contentSet>

并希望输出这样的东西

<doc>
<story>
<headline>
  Et, sent luptat luptat, commy nim zzriureet vendreetue modo   
 </headline>
<text>
Et, sent luptat luptat, commy nim zzriureet vendreetue modo
dolenis ex euisis nosto et lan ullandit lum doloreet vulla
feugiam coreet, cons eleniam il ute facin veril et aliquis ad
minis et lor sum del iriure dit la feugiamcommy nostrud min ulla
</text>
</story>
</doc>
4

1 回答 1

5

从技术上讲,inlineData元素中的第一行是空的,只有第二行包含文本。假设您要处理的所有输入的结构都相同,您可以使用

<xsl:template match="contentSet">
  <story>
    <headline><xsl:value-of select="substring-before(substring-after(inlineData, '&#10;'), '&#10;')"/></headline>
    <text><xsl:value-of select="."/></text>
  </story>
</xsl:template>

我意识到这很脆弱,但 XSLT/XPath 1.0 中的字符串处理很弱,在 XSLT 2.0 中你可以使用<xsl:value-of select="tokenize(inlineData, '\n')[normalize-space()][1]"/>.

于 2013-09-16T09:14:53.167 回答