我有一个用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>我希望你们中有人能帮助我。
发布于 2013-04-19 15:37:32
这是因为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"/>https://stackoverflow.com/questions/16099519
复制相似问题