将xml应用于xslt帮助

时间:2009-10-22 00:06:41

标签: xml xslt

我有一个很长的XML文件,但这是一个摘录。

<?xml version="1.0" encoding="UTF-8"?>
<dicom>
    <attr tag="00020000" vr="UL" len="4">190</attr>
    <attr tag="00020001" vr="OB" len="2">00\01</attr>
    <attr tag="00020002" vr="UI" len="30">1.2.840.10008.5.1.4.1.1.88.11</attr>
    <attr tag="00080090" vr="PN" len="14">Roberts^^^Dr.^</attr>
</dicom>

我也有一个xslt文件也很长,但这里有一段摘录。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">
    <xsl:output method="xml" indent="yes" media-type="text/xml-fo" encoding="UTF-8"/>
    <!-- the stylesheet processing entry point -->
    <xsl:template match="/">
        <xsl:apply-templates select="dicom"/>
    </xsl:template>

    <xsl:template match="dicom">
        TEST
        <xsl:variable name="name" select="attr[@tag='00080090']"/>
        <xsl:value-of select="$name"/>
    </xsl:template>
</xsl:stylesheet>

我有两个问题。 1.当我将xml应用于xslt时,我没有得到任何输出。经过测试,看来dicom模板甚至从未被调用过。为什么是这样? 2.如果我将dicom模板的匹配条件从“dicom”更改为“/”,那么它会被调用,但变量未正确设置。

我知道它不会生成有效的XML,我只想弄清楚发生了什么,以及我对xslt的理解有什么问题。

感谢!!!

1 个答案:

答案 0 :(得分:3)

你的样本适合我。

请注意,如果匹配/的模板只是在xsl:apply-templates上执行dicom,那么您实际上并不需要它,因为已经存在一个匹配的内置模板自动完全相同。