XSLT 匹配问题

发布于 2024-10-23 15:35:19 字数 1057 浏览 2 评论 0原文

我有以下 XSLT 问题:

假设我有此 XML

 <items>
    <item>
      <type>dog</type>
      <color>brown</color>
    </item>
    <item>
      <type>dog</type>
      <color>brown</color>
    </item>
    <item>
      <type/>
      <color>none</color>
    </item>
    <item>
      <type>dog</type>
      <color>black</color>
    </item>
 </items>

如果我在 xsl 1.0 中使用以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="item[type='dog']">
        <item>
            <itemType><xsl:value-of select="type"/></itemType>
            <itemColor><xsl:value-of select="color"/></itemColor>
        </item>
    </xsl:template>

</xsl:stylesheet>

它只会显示空节点之前的第一个匹配项。

有什么我忽略的吗?

I have the following XSLT question:

Suppose I have this XML

 <items>
    <item>
      <type>dog</type>
      <color>brown</color>
    </item>
    <item>
      <type>dog</type>
      <color>brown</color>
    </item>
    <item>
      <type/>
      <color>none</color>
    </item>
    <item>
      <type>dog</type>
      <color>black</color>
    </item>
 </items>

If I use the following in xsl 1.0:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="item[type='dog']">
        <item>
            <itemType><xsl:value-of select="type"/></itemType>
            <itemColor><xsl:value-of select="color"/></itemColor>
        </item>
    </xsl:template>

</xsl:stylesheet>

It will only show the first matches before the empty node.

Is there anything I am overlooking?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧人九事 2024-10-30 15:35:19

当我在 IE8 中加载 test.xml 时,简单的示例对我有用。我得到输出 dogdogdog

将其另存为 text.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<items>
    <item>
      <type>dog</type>
    </item>
    <item>
      <type>dog</type>
    </item>
    <item>
      <type>cat</type>
    </item>
    <item>
      <type>dog</type>
    </item>
</items>

将其另存为 test.xsl

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <xsl:apply-templates />
    </body>
    </html>
</xsl:template>
<xsl:template match="item"/> <!-- default item match (prints nothing) -->
<xsl:template match="item[type='dog']">
    <xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet>

如果这没有帮助,请编辑您的问题,提供有关您问题的更多信息。

Simple example works for me when I load the test.xml in IE8. I get the output dog dog dog

Save this as text.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<items>
    <item>
      <type>dog</type>
    </item>
    <item>
      <type>dog</type>
    </item>
    <item>
      <type>cat</type>
    </item>
    <item>
      <type>dog</type>
    </item>
</items>

Save this as test.xsl

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <xsl:apply-templates />
    </body>
    </html>
</xsl:template>
<xsl:template match="item"/> <!-- default item match (prints nothing) -->
<xsl:template match="item[type='dog']">
    <xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet>

If this is not helping, please edit your question with more information about your problem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文