我有一个标签,可以包含要处理的文本和xml标签的混合。假设对于标签我定义了xsl:templates,如何构建xsl,以便转换的结果是文本片段和标签替换的结果,它们与原始文档中的顺序相同?
这是源xml:
<diagnosis>
Line 1
Line 2
<terminology code="1234"/>
Line 3
</diagnosis>
输出应该是这样的:
Line 1 Line 2 Description1234 Line 3
Description1234是查找代码1234的结果。现在我并不关心如何将它们拼接在一起。
答案 0 :(得分:1)
我不确定<terminology/>
如何映射到“描述”,所以我假设如下:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:apply-templates/>
<!-- Final newline -->
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="terminology">
<!-- Spaces are added at the front and... -->
<xsl:text> Description</xsl:text>
<xsl:value-of select="@code"/>
<!-- at the end of attribute -->
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="text()">
<!-- Strip all white space, specifically the newlines -->
<xsl:value-of select="normalize-space(.)"/>
</xsl:template>
</xsl:stylesheet>
这是我通过xsltproc运行示例XML('so.xml')时得到的结果:
~ zacharyyoung$ xsltproc so.xsl so.xml
Line 1 Line 2 Description1234 Line 3