我有一个看起来像这样的XML文件,
<XML>
<article article-type="research">
<article-meta>
<abstract>
<p> lorisum......</p>
</abstract>
<abstract abstract-type="summary">
<p>lorisum summary</p>
</abstract>
</article-meta>
<body>
<sec>
<p>
......
</p>
</sec>
<sec sec-type="clinical">
<p> clinical test</p>
</sec>
</body>
</article>
<XML>
问题是我如何使用xslt将临床sec移动到无类型抽象中?
答案 0 :(得分:1)
您可以像这样移动临床秒:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="abstract[not(@abstract-type)]">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
<xsl:copy-of select="//sec[@sec-type='clinical']"/>
</xsl:copy>
</xsl:template>
<xsl:template match="sec[@sec-type='clinical']"/>
</xsl:stylesheet>
输出:
<XML>
<article article-type="research">
<article-meta>
<abstract>
<p> lorisum......</p>
<sec sec-type="clinical">
<p> clinical test</p>
</sec>
</abstract>
<abstract abstract-type="summary">
<p>lorisum summary</p>
</abstract>
</article-meta>
<body>
<sec>
<p>
......
</p>
</sec>
</body>
</article>
</XML>
模板只复制原始输入XML中的所有内容。匹配sec[@sec-type='clinical']
的模板为空,因此此部分将从此副本中删除。与abstract没有abstract-type属性匹配的模板 - abstract[not(@abstract-type)]
- 复制摘要并添加sec[@sec-type='clinical']
的副本。