如何使用 XSLT 显示 XML 中的确切值?

威佐内

这是我第一次使用 XSLT 和 XML。所以我要问的是,如何仅显示具有相同 product_type 的特定产品,例如“主板”、“风扇”等?也许像这样product_type == "fan",我不确定。我的计划是为每个 product_type 创建一个不同的 XSLT。

目前,我只能显示 XML 中的每个产品。XML 文件如下所示

<?xml version="1.0" standalone="yes"?>
    <products>
      <product>
        <Id>7</Id>
        <product_name>Test</product_name>
        <product_price>123</product_price>
        <product_type>MOTHER BOARD</product_type>
        <product_description>123123</product_description>
        <product_image>gpu_white.png</product_image>
      </product>
      <product>
        <Id>14</Id>
        <product_name>wwww</product_name>
        <product_price>1321</product_price>
        <product_type>FAN</product_type>
        <product_description>qwewqeqw</product_description>
        <product_image>hd_white.png</product_image>
      </product>
    <product>
        <Id>22</Id>
        <product_name>321123</product_name>
        <product_price>321</product_price>
        <product_type>MEMORY</product_type>
        <product_description>Lorem ipsum dolor sit amet</product_description>
        <product_image>fan_white.png</product_image>
      </product>
    </products>

和 XSLT

<?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
        <xsl:output method="xml" indent="yes"/>

        <xsl:template match="/">
        <div class="main">
          <xsl:for-each select="products/product">
            <div class="box">
              <h3 style="color:white">
                <xsl:value-of select="product_name"/>
              </h3>
              <xsl:element name="img">
                <xsl:attribute name="src">
                  product_image/<xsl:value-of select="product_image"/>
                </xsl:attribute>
                <xsl:attribute name="width">
                  100px
                </xsl:attribute>
                <xsl:attribute name="height">
                  100px
                </xsl:attribute>
              </xsl:element>
              <p style="color:white">
                RM  <xsl:value-of select="format-number(product_price,'0.00')" />
              </p>
              <p style="font-size:9pt;">
                <xsl:value-of select="product_description"/>
              </p>
              <xsl:element name="button">
                <xsl:attribute name="class">btn btn-danger my-cart-btn</xsl:attribute>
                <xsl:attribute name="data-id">
                  <xsl:value-of select="Id"/>
                </xsl:attribute>
                <xsl:attribute name="data-name">
                  <xsl:value-of select="product_name"/>
                </xsl:attribute>
                <xsl:attribute name="data-summary">
                  <xsl:value-of select="product_description"/>
                </xsl:attribute>
                <xsl:attribute name="data-price">
                  <xsl:value-of select="product_price"/>
                </xsl:attribute>
                <xsl:attribute name="data-quantity">1</xsl:attribute>
                <xsl:attribute name="data-image">
                  product_image/<xsl:value-of select="product_image"/>
                </xsl:attribute>
                Add to Cart <span class="glyphicon glyphicon-shopping-cart"></span>
              </xsl:element>

            </div>
          </xsl:for-each>
        </div>
      </xsl:template>
</xsl:stylesheet>
C队

这样做非常简单。只需将您的条件添加到方括号中的选择表达式中,即可表示条件

<xsl:for-each select="products/product[product_type = 'FAN']">

(请记住它是区分大小写的)

更好的是,使用参数,而不是为每个产品类型使用单独的样式表......

<xsl:param name="prodType" select="'FAN'"/>

<xsl:template match="/">
<div class="main">
  <xsl:for-each select="products/product[product_type = $prodType]">

将参数传递给 XSLT 的方式取决于您使用的 XSLT 处理器以及用于调用它的平台。

请注意,您可以通过删除xsl:elementxsl:attribute标签并直接写出元素和属性来大大简化 XSLT ,利用属性值模板,您希望属性的值基于表达式的值。

试试这个 XSLT....

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
    <xsl:output method="html" indent="yes"/>

    <xsl:param name="prodType" select="'FAN'"/>

    <xsl:template match="/">
    <div class="main">
      <xsl:for-each select="products/product[product_type = $prodType]">
        <div class="box">
          <h3 style="color:white">
            <xsl:value-of select="product_name"/>
          </h3>
          <img src="product_image/{product_image}" width="100px" height="100px"></img>
          <p style="color:white">
            RM  <xsl:value-of select="format-number(product_price,'0.00')" />
          </p>
          <p style="font-size:9pt;">
            <xsl:value-of select="product_description"/>
          </p>
          <button class="btn btn-danger my-cart-btn" 
                  data-id="{Id}" 
                  data-name="{product_name}" 
                  data-summary="{product_description}"
                  data-price="{product_price}"
                  data-quantity="1"
                  data-image="product_image/{product_image}">
            Add to Cart <span class="glyphicon glyphicon-shopping-cart"></span>
          </button>

        </div>
      </xsl:for-each>
    </div>
  </xsl:template>
</xsl:stylesheet>

属性中的花括号表示属性值模板,表示要评估的表达式,而不是字面上的输出。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用XSLT在XML文件中显示SchemaLocation

来自分类Dev

使用XSLT在XML文件中显示SchemaLocation

来自分类Dev

如何显示由熊猫DataFrame制成的matplotlib pyplot中的确切值?

来自分类Dev

如何显示该行中包含特定值的确切列

来自分类Dev

如何显示WinMerge中单词的确切差异?

来自分类Dev

如何使用 xslt 和 xml 显示图像?

来自分类Dev

在R中显示变量的确切值

来自分类Dev

如何使用XML文件中的XSLT在网页中显示锚定URL和标题,并插入图像

来自分类Dev

基本:使用 XML 和 XSLT 显示图像

来自分类Dev

如何使用xslt显示重复的属性值

来自分类Dev

如何使用XSLT在HTML中显示图像?

来自分类Dev

如何显示具有表格中可用记录的确切数目的收集表单

来自分类Dev

如何仅显示带有关键字的文件中的确切行?

来自分类Dev

如何在XFCE中设置外部显示器的确切位置?

来自分类Dev

如何在xslt中转换重复的xml节点并在新行中显示值

来自分类Dev

使用XSLT仅显示来自xml的xml文件中不为null或零的那些记录

来自分类Dev

如何在表格的确切位置显示工具提示?

来自分类Dev

如何显示我的确切驱动程序

来自分类Dev

使用xslt替换xml中的值

来自分类Dev

使用XSLT转换后,XML中的HTML无法正确显示在输出中

来自分类Dev

使用变量(xslt)控制要在xml中显示多少级

来自分类Dev

XSLT需要帮助来转换XML以显示值和属性

来自分类Dev

在jquery图的工具提示中显示内容的确切值

来自分类Dev

如何使用Vuejs显示Firebase返回的确切错误

来自分类Dev

如何在angularjs中使用ng-click显示ng-repeat的确切内容

来自分类Dev

在 JavaFX TextArea 中显示来自 XSLT 转换的 XML

来自分类Dev

如何使用XSLT从XML读取所有内部递归值

来自分类Dev

如何使用XSLT根据条件更改XML的值

来自分类Dev

如何使用 XSLT 检查 xml 元素值是否为“空”?

Related 相关文章

  1. 1

    使用XSLT在XML文件中显示SchemaLocation

  2. 2

    使用XSLT在XML文件中显示SchemaLocation

  3. 3

    如何显示由熊猫DataFrame制成的matplotlib pyplot中的确切值?

  4. 4

    如何显示该行中包含特定值的确切列

  5. 5

    如何显示WinMerge中单词的确切差异?

  6. 6

    如何使用 xslt 和 xml 显示图像?

  7. 7

    在R中显示变量的确切值

  8. 8

    如何使用XML文件中的XSLT在网页中显示锚定URL和标题,并插入图像

  9. 9

    基本:使用 XML 和 XSLT 显示图像

  10. 10

    如何使用xslt显示重复的属性值

  11. 11

    如何使用XSLT在HTML中显示图像?

  12. 12

    如何显示具有表格中可用记录的确切数目的收集表单

  13. 13

    如何仅显示带有关键字的文件中的确切行?

  14. 14

    如何在XFCE中设置外部显示器的确切位置?

  15. 15

    如何在xslt中转换重复的xml节点并在新行中显示值

  16. 16

    使用XSLT仅显示来自xml的xml文件中不为null或零的那些记录

  17. 17

    如何在表格的确切位置显示工具提示?

  18. 18

    如何显示我的确切驱动程序

  19. 19

    使用xslt替换xml中的值

  20. 20

    使用XSLT转换后,XML中的HTML无法正确显示在输出中

  21. 21

    使用变量(xslt)控制要在xml中显示多少级

  22. 22

    XSLT需要帮助来转换XML以显示值和属性

  23. 23

    在jquery图的工具提示中显示内容的确切值

  24. 24

    如何使用Vuejs显示Firebase返回的确切错误

  25. 25

    如何在angularjs中使用ng-click显示ng-repeat的确切内容

  26. 26

    在 JavaFX TextArea 中显示来自 XSLT 转换的 XML

  27. 27

    如何使用XSLT从XML读取所有内部递归值

  28. 28

    如何使用XSLT根据条件更改XML的值

  29. 29

    如何使用 XSLT 检查 xml 元素值是否为“空”?

热门标签

归档