【问题标题】:XSLT for XML to textXSLT 用于 XML 到文本
【发布时间】:2015-12-10 16:44:46
【问题描述】:

我从未使用过 XSLT,但我需要它来将 XML 文档(瑞典语语料库)转换为文本。 XML 如下所示:

<corpus id="bloggmix2014">
<blog url="http://thaipinnen.blogg.se/" title="thaipinnen" age="19" city="Södertälje" categories="|Mode och design &gt; Mode, allmänt|Mode och design &gt; Webbdesign|Musik &gt; Allmänt och övrigt|Vardagsbetraktelser &gt; Ingen ålder|">
<text title="Summerburst day 1" date="2014-06-14" tags="|" datefrom="20140614" dateto="20140614" timefrom="000000" timeto="235959">
<sentence id="934b7396b8-934befce19">
<w pos="UO" msd="UO" lemma="|" lex="|" saldo="|" prefix="|" suffix="|" ref="1" dephead="" deprel="ROOT">Summerburst</w>
<w pos="UO" msd="UO" lemma="|" lex="|" saldo="|" prefix="|" suffix="|" ref="2" dephead="1" deprel="HD">day</w>
<w pos="RG" msd="RG.NOM" lemma="|1|" lex="|_1..nl.1|" saldo="|en..1|" prefix="|" suffix="|" ref="3" dephead="4" deprel="DT">1</w>
<w pos="NN" msd="NN.UTR.SIN.IND.NOM" lemma="|" lex="|" saldo="|" prefix="|hotell..nn.1|" suffix="|frukost..nn.1|" ref="4" dephead="1" deprel="MS">hotellfrukost</w>
<w pos="IN" msd="IN" lemma="|godmorgon|" lex="|godmorgon..in.1|" saldo="|god_morgon..1|" prefix="|" suffix="|" ref="5" dephead="4" deprel="ET">Godmorgon</w>
<w pos="MAD" msd="MAD" lemma="|" lex="|" saldo="|" prefix="|" suffix="|" ref="6" dephead="4" deprel="IU">!</w>
</sentence>
</text>
</blog>
</corpus>

所以你可以看到有很多属性等等。我不关心这些属性。我只想要字符串(如果这就是你所说的) 在我的文档中的每个单词标签,用换行符分隔。所以这段摘录看起来像这样转换为文本:

Summerburst
day
1
hotellfrukost
Godmorgon
!

【问题讨论】:

  • 你不是新来的:你知道这不是问问题的方法。

标签: xml xslt


【解决方案1】:

XSLT 2.0 解决方案

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

    <xsl:template match="/">
        <xsl:value-of select="//w" separator="&#10;"/>
    </xsl:template>

</xsl:stylesheet>

XSLT 1.0 解决方案

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="text"/>

    <xsl:template match="/">
        <xsl:apply-templates select="//w"/>
    </xsl:template>

    <xsl:template match="w">
        <xsl:value-of select="."/>
        <xsl:if test="position() != last()">
            <xsl:text>&#10;</xsl:text>
        </xsl:if>  
    </xsl:template>

</xsl:stylesheet>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    相关资源
    最近更新 更多