0

我有一个按照 TEI“标准”构建的 xml 文档,也许你们中有些人知道。我制作了一个 XSLT 将其转换为另一个 XML 结构。

但是我遇到了一个问题。转换过程不会到达 XML 结构中的特定节点。

原始文档如下所示:

<TEI xmlns="http://www.tei-c.org/ns/1.0" xmlns:tgl="http://******/namespaces  /metadata/language/2010" xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns:tns="http://*****/namespaces/metadata/core/2010" xmlns:tgr="http://*****/namespaces/metadata/agent/2010" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:tgs="http://*****/namespaces/metadata/script/2010" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xml:id="tg397" n="/Literatur/M/Birlinger, Anton/Märchen und Sagen/Sagen, Märchen, Volksaberglauben/3./299. Von den Sternen/2. [Die Sterne halten Viele für die Köpfe silberner Nägel]">
<teiHeader xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:a="http://www.*****/namespace/digibib/authors" xmlns:fn="http://www.w3.org/2005/xpath-functions">

<fileDesc>
    <titleStmt>
    <title> hshshhshs </title>
</titleStmt>
<publicationStmt>
   ....

使用我的 XSLT,我尝试到达一些节点。因为它不是我尝试一个简单的例子,但我无法达到 . 这是 XSLT:

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

<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
    <!--<xsl:template match="/TEI">-->
 <xsl:template match="/">


        <add><doc>
            <field name="title">
                <xsl:value-of select="TEI/teiHeader/fileDesc/titleStmt/title"/>
            </field>-
        </doc></add>


 </xsl:template>
 </xsl:stylesheet>

这是结果:

 <?xml version="1.0" encoding="UTF-8"?>
   <add>
   <doc>
    <field name="title"/>-

       </doc>
   </add>

我希望你们中的某个人能帮助我。

4

1 回答 1

3

这是因为 TEI 文档以这一行开头

<TEI xmlns="http://www.tei-c.org/ns/1.0"

这意味着文档中的所有元素,除非另外指定命名空间前缀,都在命名空间“” http://www.tei-c.org/ns/1.0

但是,在您的 XSLT 文档中,您尝试选择没有命名空间的元素,因此它与 TEI 中具有命名空间的元素不匹配。

解决方案是首先在 XSLT 文档中声明相关的命名空间,使用您喜欢的任何前缀:

<xsl:stylesheet 
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
   xmlns:tei="http://www.tei-c.org/ns/1.0"
   version="1.0">

然后你可以像这样编写你的 XLST 语句

<xsl:value-of select="tei:TEI/tei:teiHeader/tei:fileDesc/tei:titleStmt/tei:title"/>
于 2013-04-19T07:37:31.847 回答