我一直在这个表格上搜索我的问题的答案,但没有找到任何结果。问题是我应该使用命名空间来使用XSLT转换下面的XML。将命名空间添加到XSLT时,转换不起作用。
XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<TED_EXPORT xmlns="http://publications.europa.eu/TED_schema/Export"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://publications.europa.eu/TED_schema/Export/R2.0.8.S02.E01 TED_EXPORT.xsd"
DOC_ID="146944-2014"
EDITION="2014085">
<TECHNICAL_SECTION>
<RECEPTION_ID>14-147821-001</RECEPTION_ID>
<DELETION_DATE>20150422</DELETION_DATE>
<FORM_LG_LIST>DA DE EN ES FI FR EL IT NL PT SV CS ET HU LT LV MT PL SK SL GA BG RO HR </FORM_LG_LIST>
<COMMENTS>From Convertor</COMMENTS>
</TECHNICAL_SECTION>
</TED_EXPORT>
XLST文件:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ted="http://publications.europa.eu/TED_schema/Export#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
exclude-result-prefixes="xsl">
<xsl:template match="/">
<rdf:RDF>
<xsl:value-of select="//@EDITION"/>
</rdf:RDF>
test
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="/ted:TECHNICAL_SECTION">
Technical Section
</xsl:template>
请注意,我简化了此XSLT工具,以便专注于命名空间问题。
从XML和XSLT中删除命名空间时,转换有效。你们中有没有人知道我做错了什么?
感谢您的帮助!
答案 0 :(得分:1)
AFAICT,你的样式表&#34;没有工作&#34;这是因为:
缺少</stylesheet>
结束标记;
所有声明的名称空间都包含冗余的#
后缀;
此模板:
<xsl:template match="/ted:TECHNICAL_SECTION">
...
与任何内容都不匹配,因为TECHNICAL_SECTION
不是根元素。请尝试改为:
<xsl:template match="ted:TECHNICAL_SECTION">
...