xsl:结果转换不可能

时间:2014-03-20 23:25:25

标签: xml xslt-1.0 transformation xml-namespaces tei

我在转换XML代码时遇到了问题。我想将每个div type =“article”元素转换为另一个新文件。我的XML文件如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <!--Die Texte sind eine Abwandlung des von www.editura.de erstellten und von TextGrid weiterverarbeiteten und zur Verfügung gestellten Datenbestandes und
    werden unter der Lizenz Creative Commons Namensnennung 3.0 Deutschland Lizenz (by-Nennung TextGrid, www.editura.de)
    (http://creativecommons.org/licenses/by/3.0/de/legalcode) wiederum zur Verfügung gestellt.-->
    <TEI xmlns="http://www.tei-c.org/ns/1.0"
         xmlns:tei="http://www.tei-c.org/ns/1.0"
         xmlns:xi="http://www.w3.org/2001/XInclude"
         xmlns:svg="http://www.w3.org/2000/svg"
         xmlns:math="http://www.w3.org/1998/Math/MathML">
       <teiHeader>
          <fileDesc>
             <titleStmt>
                <title>Title</title>
             </titleStmt>
             <publicationStmt>
                <p>Publication Information</p>
             </publicationStmt>
             <sourceDesc>
                <p>Information about the source</p>
             </sourceDesc>
          </fileDesc>
       </teiHeader>
       <text>
          <body>
             <div type="article">
                <head>Abel, Ambrosius</head>
                <div type="text">
                   <p>
                      <hi rend="bold">Abel, Ambrosius</hi>. Ambrosius Abel wurde am 1. Juni 1820 geboren</p>
                   <p rend="zenoCOLit">
                      <hi rend="italics">Quellen</hi>: Verlagskatalog 1887, Börsenblatt.</p>
                </div>
             </div>

             <div type="article">
                <head>Babenzien, Max</head>
                <div type="text">
                   <p>
                      <hi rend="bold">Babenzien, Max</hi>. Während das Gründungsjahr der Buchdruckerei in das Jahr 1816 fällt, ist die Buchhandlung von <hi rend="italics">A. Haase</hi> unter dessen Namen am 1. April 1833 gegründet.</p>
                   <p rend="zenoCOLit">
                      <hi rend="italics">Quellen</hi>: Verlagskatalog 1899.</p>
                </div>
             </div>
</body>
   </text>
</TEI>

每当我尝试转换xml文件时,XSL文件转换就不会执行。 XSL看起来像这样:

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

    <xsl:output method="text"/>
    <xsl:output method="xml" indent="yes" name="xml"/>




    <xsl:template match="/">
        <xsl:for-each select="//div[@type = 'article']">
            <xsl:variable name="filename"
                select="concat('ausgabedateien/',@type,'.xml')" />
            <xsl:value-of select="$filename" />  

            <xsl:result-document href="{$filename}_{position()}" format="xml" indent="yes">

                <TEI xmlns="http://www.tei-c.org/ns/1.0"
                    xmlns:tei="http://www.tei-c.org/ns/1.0"
                    xmlns:xi="http://www.w3.org/2001/XInclude"
                    xmlns:svg="http://www.w3.org/2000/svg"
                    xmlns:math="http://www.w3.org/1998/Math/MathML">
                    <teiHeader>
                        <fileDesc>
                            <titleStmt>
                                <title>Title</title>
                            </titleStmt>
                            <publicationStmt>
                                <p>Publication Information</p>
                            </publicationStmt>
                            <sourceDesc>
                                <p>Information about the source</p>
                            </sourceDesc>
                        </fileDesc>
                    </teiHeader>
                    <text>
                        <body>

                            <xsl:copy-of select="." />

                        </body>
                    </text>
                </TEI>

            </xsl:result-document>
        </xsl:for-each>
    </xsl:template>

</xsl:stylesheet>

我尝试删除xml文件的xmlns属性,一切都会正常工作。任何人都有解决这个问题的方法吗?

1 个答案:

答案 0 :(得分:2)

由于您使用的是XSLT 2.0,因此可以添加

xpath-default-namespace="http://www.tei-c.org/ns/1.0"

到xsl:stylesheet元素。