我在转换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属性,一切都会正常工作。任何人都有解决这个问题的方法吗?
答案 0 :(得分:2)
由于您使用的是XSLT 2.0,因此可以添加
xpath-default-namespace="http://www.tei-c.org/ns/1.0"
到xsl:stylesheet元素。