Вопрос по html, xml, xslt – +1 Правильный стиль притяжения.

1

аписать xsl в теле файла products.xsl, который получит название продукта и состояние с количеством> 10

products.xml:

<?xml version="1.0" encoding="iso-8859-1"?>
<products>
    <product>
        <name>soaps</name>
        <quantity>10</quantity>
        <condition>ready</condition>
    </product>
    <product>
        <name>soaps</name>
        <quantity>15</quantity>
        <condition>ready</condition>
    </product>
    <product>
        <name>soaps</name>
        <quantity>20</quantity>
        <condition>ready</condition>
    </product>
</products>

products.xsl

<?xml version="1.0"?><!-- DWXMLSource="products.xml" -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE> products</TITLE>
</HEAD>
<BODY>

products quantity greater than 10 : <BR/>


</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
@ Дружелюбный, как написать XSL для этого? Chris
Хороший вопрос, +1. Смотрите мой ответ для полного, короткого и простого решения. :) Dimitre Novatchev
Вводобновленный mousio
пожалуйста, проверьте ваш пример products.xml, открывающие / закрывающие теги для <products> кажутся неправильными. Если вы используете отступы, вы увидите это легче. Doc Brown
Я думаю, что вы можете использовать if-case. Prof. Falken

Ваш Ответ

3   ответа
0

Это преобразование (нет<xsl:for-each> и никаких условных инструкций)

<xsl:stylesheet version="1..w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="product[quantity > 10]">
  <p>
    Product: <xsl:value-of select="name"/>
    contition: <xsl:value-of select="condition"/>
    quantity: <xsl:value-of select="quantity"/>
  </p>
 </xsl:template>

 <xsl:template match="product"/>
</xsl:stylesheet>

при применении к предоставленному документу XML:

<products>
    <product>
        <name>soaps</name>
        <quantity>10</quantity>
        <condition>ready</condition>
    </product>
    <product>
        <name>soaps</name>
        <quantity>15</quantity>
        <condition>ready</condition>
    </product>
    <product>
        <name>soaps</name>
        <quantity>20</quantity>
        <condition>ready</condition>
    </product>
</products>

дает желаемый результат:

<p>
    Product: soaps
    contition: ready
    quantity: 15</p>
<p>
    Product: soaps
    contition: ready
    quantity: 20</p>
+1 Правильный стиль притяжения. user357812
2

Это должно сделать трюк:

<xsl:for-each select="/products/product">
  <xsl:if test="quantity > 10">
    <xsl:value-of select="name" />: <xsl:value-of select="condition" /> <br/>
  </xsl:if>
</xsl:for-each>
спасибо работает Chris
Там нет необходимостиxsl:if инструкция. user357812
1

(если предоставляется правильно сформированный XML - см. Комментарий к вопросу)

<BODY> products quantity greater than 10 : <BR/>
    <xsl:apply-templates select="//product[quantity &gt; 10]"/>
</BODY>

В сочетании с, например, этот шаблон:

<xsl:template match="product">
    <P>
        <xsl:value-of select="name"/>
        <xsl:text>: </xsl:text>
        <xsl:value-of select="condition"/>
    </P>
</xsl:template>

Просто настройте в соответствии с вашими потребностями ...

Правильный стиль нажатия. user357812

Похожие вопросы