document() 函数在 XSLT 中如何工作?
How does the document() function work in XSLT?
所以基本上我一直在努力让 xslt 中的 document() 函数正常工作,但是我找不到适合我生活的方法。我被告知要使用 XMLTools 插件在 Notepad++ 中学习它并转换 xml.
我已经创建了 2 个基本的 xml 文件,其中包含简要数据,但我什至无法将这两个文件链接在一起,因为我在网上找不到任何帮助来学习这个。
我的第一个 xml 名为 cars.xml:
<?xml version="1.0"?>
<!DOCTYPE cars SYSTEM "cars.dtd">
<cars>
<car>
<carManufacturer>BMW</carManufacturer>
<carModel>1 Series</carModel>
<carYear>2013</carYear>
<carPrice>£7,950</carPrice>
</car>
<car>
<carManufacturer>BMW</carManufacturer>
<carModel>3 Series</carModel>
<carYear>2014</carYear>
<carPrice>£9,950</carPrice>
</car>
</cars>
我的第二个 xml 文件名为 customers.xml:
<?xml version="1.0"?>
<!DOCTYPE customers SYSTEM "cars.dtd">
<customers>
<customer>
<firstName>John</firstName>
<lastName>Smith</lastName>
<location>Carterton</location>
</customer>
<customer>
<firstName>Jeremy</firstName>
<lastName>Clarkson</lastName>
<location>Chipping Norton</location>
</customer>
</customers>
这是我到目前为止在我的 xsl 中想到的,但我不知道在哪里:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="no"/>
<xsl:template match="/">
<xsl:call-template name="StartHTML">
<xsl:with-param name="Title" select="'Cars'"/>
</xsl:call-template>
</xsl:template>
<!--<xsl:template match="cars">
<xsl:variable name="CarName">
<xsl:value-of select="car/carManufacturer"/>
<xsl:text> </xsl:text>
<xsl:value-of select="car/carModel"/>
</xsl:variable>
</xsl:template>-->
</xsl:stylesheet>
任何使用此功能的帮助将不胜感激:)
从你的问题来看,你的两个文件是如何链接的还不清楚...
文档功能可以这样简单使用:
<xsl:variable name="carsFile" select="document('cars.xsml')"/>
然后例如可以用作:
<xsl:value-of select="$carsFile/cars/car/carManufacturer"/>
此外,如果您无法访问 XML/XSLT 开发环境(XMLSpy、Oxygen XML、...),这对于不了解的用户来说是昂贵的经常需要它们,根据我的经验,XMLNotepad++ 中的工具插件很难使用,而且错误消息并不总是容易解码。
我建议您继续在 Notepad++ 中编辑您的 XSLT,并有一个简单的批处理文件,您可以从中 运行 Saxon 处理您的文件,如下所示:
java -cp saxon9he.jar net.sf.saxon.Transform -t -s:input.xml -xsl:transform.xsl -o:output.xml
所以基本上我一直在努力让 xslt 中的 document() 函数正常工作,但是我找不到适合我生活的方法。我被告知要使用 XMLTools 插件在 Notepad++ 中学习它并转换 xml.
我已经创建了 2 个基本的 xml 文件,其中包含简要数据,但我什至无法将这两个文件链接在一起,因为我在网上找不到任何帮助来学习这个。
我的第一个 xml 名为 cars.xml:
<?xml version="1.0"?>
<!DOCTYPE cars SYSTEM "cars.dtd">
<cars>
<car>
<carManufacturer>BMW</carManufacturer>
<carModel>1 Series</carModel>
<carYear>2013</carYear>
<carPrice>£7,950</carPrice>
</car>
<car>
<carManufacturer>BMW</carManufacturer>
<carModel>3 Series</carModel>
<carYear>2014</carYear>
<carPrice>£9,950</carPrice>
</car>
</cars>
我的第二个 xml 文件名为 customers.xml:
<?xml version="1.0"?>
<!DOCTYPE customers SYSTEM "cars.dtd">
<customers>
<customer>
<firstName>John</firstName>
<lastName>Smith</lastName>
<location>Carterton</location>
</customer>
<customer>
<firstName>Jeremy</firstName>
<lastName>Clarkson</lastName>
<location>Chipping Norton</location>
</customer>
</customers>
这是我到目前为止在我的 xsl 中想到的,但我不知道在哪里:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="no"/>
<xsl:template match="/">
<xsl:call-template name="StartHTML">
<xsl:with-param name="Title" select="'Cars'"/>
</xsl:call-template>
</xsl:template>
<!--<xsl:template match="cars">
<xsl:variable name="CarName">
<xsl:value-of select="car/carManufacturer"/>
<xsl:text> </xsl:text>
<xsl:value-of select="car/carModel"/>
</xsl:variable>
</xsl:template>-->
</xsl:stylesheet>
任何使用此功能的帮助将不胜感激:)
从你的问题来看,你的两个文件是如何链接的还不清楚...
文档功能可以这样简单使用:
<xsl:variable name="carsFile" select="document('cars.xsml')"/>
然后例如可以用作:
<xsl:value-of select="$carsFile/cars/car/carManufacturer"/>
此外,如果您无法访问 XML/XSLT 开发环境(XMLSpy、Oxygen XML、...),这对于不了解的用户来说是昂贵的经常需要它们,根据我的经验,XMLNotepad++ 中的工具插件很难使用,而且错误消息并不总是容易解码。
我建议您继续在 Notepad++ 中编辑您的 XSLT,并有一个简单的批处理文件,您可以从中 运行 Saxon 处理您的文件,如下所示:
java -cp saxon9he.jar net.sf.saxon.Transform -t -s:input.xml -xsl:transform.xsl -o:output.xml