gpt4 book ai didi

xml - XSLT 模板执行顺序

转载 作者:数据小太阳 更新时间:2023-10-29 02:58:10 27 4
gpt4 key购买 nike

我有一个像这样的 xml 文件:receipt.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xml" href="receipt.xslt"?>
<printedslip>
<pos>
<posno>11546546</posno>
</pos>
<store>
<storeno>1</storeno>
<storename>Store 01</storename>
<orgno>001</orgno>
<postalcode>550</postalcode>
</store>
<cashier>
<userno>1</userno>
<name>Sara</name>
</cashier>
<headertext>Receipt Profile Header</headertext>
</printedslip>

和一个 xslt 文件:receipt.xslt

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:include href="params.xslt"/>
<xsl:include href="store.xslt"/>
<xsl:include href="headergroup.xslt"/>

<xsl:output method="text" />
<xsl:strip-space elements="*"/>

<xsl:template match="store">
<xsl:call-template name="store">
<xsl:with-param name="value" select="store"/>
<xsl:with-param name="store_no" select="$store_no"/>
</xsl:call-template>
</xsl:template>

<xsl:template match="headertext">
<xsl:call-template name="receiptheader">
<xsl:with-param name="value" select="headertext"/>
</xsl:call-template>
</xsl:template>

<xsl:template match="cashier">
<xsl:call-template name="cashier">
<xsl:with-param name="value" select="cashier"/>
<xsl:with-param name="cashier" select="$cashier"/>
</xsl:call-template>
</xsl:template>
</xsl:stylesheet>

我希望收到输出文本,按照模板在 XSLT 文件中添加的顺序形成。相反,我首先收到商店信息、收银员和标题文本,按照节点在 XML 文件中出现的顺序。我想从 XSLT 文件中获取订单:商店、标题文本、收银员。

有解决办法吗?

最佳答案

添加一个与打印单匹配的模板,然后您可以定义调用子元素的顺序:

<xsl:template match="printedslip">
<xsl:apply-templates select="store"/>
<xsl:apply-templates select="headertext"/>
<xsl:apply-templates select="cashier"/>
</xsl:template>

否则顺序取决于输入 XML(商店、收银员、标题文本)。 XSLT 中模板的顺序不会影响打印单中元素的顺序。

通常,XSLT 处理器从上到下遍历输入 XML 中的所有元素 - 因此如果您不想要该顺序 - 您需要告诉处理器(在 xslt 中)。

关于xml - XSLT 模板执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12087257/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com