【发布时间】:2018-04-19 12:15:10
【问题描述】:
我使用以下 XSLT 代码从另一个 XML 文件中提取元素列表:
<xsl:variable name="titleCodes" select="document('other_XML.xml')/list"/>
other_XML.xml 文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="struktur_berufe.xsd">
<job id="15339" bkz="B 01104-101">
<type>t</type>
<name>
<name_nl>Job a</name_nl>
</name>
</job>
<job>
...
</job>
...
</list>
我现在想提取job 元素的id 属性,并由name_nl 元素过滤。我过滤的值来自我要转换的 XML 文件,如下所示:
<JobPost>
<id>1</id>
<title>
Job a <!-- value I filter by -->
</title>
</JobPost>
到目前为止,这是我尝试过的:
<TitleCode>
<xsl:value-of select="$titleCodes/job[type='t']/name[name_nl=title]/ancestor::job/@id"/>
</TitleCode>
但是,问题似乎是,[name_nl=title] 是空的,因为它在 other_XML.xml 中查找title 元素,而它当然没有。
我也尝试过使用这样的变量:
<TitleCode>
<xsl:variable select="title" name="ab"/>
<xsl:value-of select="$titleCodes/job[type='t']/name[name_nl=$ab]/ancestor::job/@id"/>
</TitleCode>
但这仍然返回''。
那么有什么办法可以解决这个问题吗?
【问题讨论】:
-
您的“other_XML.xml”格式不正确。您有一个开始的
<berufeliste >标记,但有一个结束的<list>标记。我猜你已经开始翻译标签了,但还没有完全完成...... -
哦,是的,这是我的错。我想快速翻译它,这样元素就不是德语了。对此感到抱歉。