XSLT / XML:从嵌套元素中展开值

时间:2017-08-02 17:19:13

标签: xml xslt

鉴于我有以下XML

<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="http://www.stoa.org/epidoc/schema/8.19/tei-epidoc.rng"
schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="http://www.stoa.org/epidoc/schema/8.19/tei-epidoc.rng"
schematypens="http://purl.oclc.org/dsdl/schematron"?>
<?xml-stylesheet type="text/xsl" href="tei_poetry_parse2.xslt"?>

<TEI>
    <l>In nova fert animus mutatas dicere formas</l>
    <l>corpora; di, coeptis (nam vos mutastis et illas)</l>
</TEI>

我想用XSLT转换为以下代码

<lb /> 
In nova fert animus mutatas dicere formas
<lb /> 
corpora; di, coeptis (nam vos mutastis et illas)

所以基本上我想提取文本内容并将其放在元素之后(我想将其更改为空的或自动关闭的<lb>。 我尝试使用以下XSLT-Stylesheet:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xpath-default-namespace="http://www.tei-c.org/ns/1.0" version="2.0">
    <xsl:output method="xml"/>


    <xsl:template match="/">
        <text>

            <title>Text</title>

            <xsl:apply-templates/>

        </text>

    </xsl:template>

    <xsl:template match="l" xmlns="http://www.tei-c.org/ns/1.0">

        <lb />
        <xsl:value-of select="(text())"/>

    </xsl:template>



</xsl:stylesheet>

当我对其进行转换时,所有<lb> - 标签都嵌套在一起。当我将输出方法更改为html时,它可以工作,但我需要XML作为输出。 我很乐意提供任何帮助!

我得到了什么: DOM

1 个答案:

答案 0 :(得分:0)

让我们举一个简单的工作示例:

XML

<TEI xmlns="http://www.tei-c.org/ns/1.0" >
    <l>In nova fert animus mutatas dicere formas</l>
    <l>corpora; di, coeptis (nam vos mutastis et illas)</l>
</TEI>

XSLT 2.0

<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xpath-default-namespace="http://www.tei-c.org/ns/1.0" >
<xsl:output method="xml" omit-xml-declaration="yes" version="1.0" encoding="utf-8" indent="yes"/>

<xsl:template match="/TEI">
    <text>
        <title>Text</title>
        <xsl:apply-templates/>
    </text>
</xsl:template>

<xsl:template match="l">
    <lb/>
    <xsl:value-of select="."/>
</xsl:template>

</xsl:stylesheet>

<强>结果

<text>
   <title>Text</title>
    <lb/>In nova fert animus mutatas dicere formas
    <lb/>corpora; di, coeptis (nam vos mutastis et illas)
</text>

演示:http://xsltransform.net/a9Gixb