XSL选择第一行纯文本

zam*_*ita 1 xslt linefeed

我有一个内容类型为纯文本的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>
Run Code Online (Sandbox Code Playgroud)

并希望输出这样的东西

<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>
Run Code Online (Sandbox Code Playgroud)

Mar*_*nen 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>
Run Code Online (Sandbox Code Playgroud)

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