Я нашел несколько похожих ответов, но не могу понять, почему это не работает;
Это урезанная версия моей настоящей проблемы, но я проверил ее и получил тот же результат;
test1.xml
<?xml version="1.0" encoding="UTF8"?>
<fieldList>
<sourceField name="SourceTime">
<fid>REC_TIME</fid>
</sourceField>
</fieldList>
lookup.xml
<?xml version="1.0" encoding="UTF-8"?>
<data>
<field name="REC_TIME" fid_type="DATE"/>
</data>
joinTest.xsml
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8" media-type="text/plain"/>
<xsl:variable name="fieldDict" select="'lookup.xml'" />
<xsl:template match="/fieldList/*[fid]">
<xsl:variable name="id" select="current()"/>
<xsl:value-of select="$id"/>
<xsl:for-each select="document($fieldDict)/data/field[@name = $id]">
<xsl:value-of select="@type"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Теперь, если я изменю xpath на [@name], я получу
REC_TIME
MONKEY
это результат, который я хочу получить, но очевидно, что в реальном файле гораздо больше одной записи, поэтому мне нужен фильтр, чтобы он действительно работал!
Я тестирую это с xsltproc в Linux
xsltproc --version
Using libxml 20705, libxslt 10124 and libexslt 813
xsltproc was compiled against libxml 20632, libxslt 10124 and libexslt 813
libxslt 10124 was compiled against libxml 20632
libexslt 813 was compiled against libxml 20632
Большое спасибо.