Как мне получить мой xsl-файл для отображения продажных цен? - PullRequest
0 голосов
/ 26 марта 2012

Я работаю над заданием, в котором я должен по-разному показывать продукты. Я не могу понять, если файл XSL является неправильным или XML-файл, или оба.
Фрагмент назначения:
каждый Товар в инвентаре должен иметь цену продажи, независимо от того, продается он или нет. Товар, который продается, будет идентифицирован через атрибут продажи со значениями «да» или «нет». Атрибут продажи должен быть помещен в тег ID. Если тег продажи «да», то используется цена продажи, в противном случае используется обычная цена.

Моя проблема в том, что будут отображаться только обычные цены независимо от того, @ sale = "yes" или "no"

<body>
    <table> 
        <xsl:for-each select="catalog/item">            

                <tr>
                    <xsl:attribute name="sale">
                            <xsl:value-of select="id"/>
                        </xsl:attribute>
                    <td><xsl:value-of select="company"/></td>
                    <td><xsl:value-of select="product"/></td>
                    <td><xsl:value-of select="category"/></td>
                    <td><xsl:value-of select="description"/></td>
                    <xsl:choose>
                        <xsl:when test="@sale = 'yes'">
                            <td><xsl:value-of select="sale"/></td>
                        </xsl:when>
                        <xsl:otherwise>
                            <td><xsl:value-of select="price"/></td>
                        </xsl:otherwise>
                    </xsl:choose>
                    <td><xsl:value-of select="unit"/></td>
                    <td>
                        <img>
                            <xsl:attribute name="src">
                                <xsl:value-of select="picture"/>
                            </xsl:attribute>
                    </img>
                    </td>
                </tr>

        </xsl:for-each>
    </table>
</body>

и XML с образцом из 2 элементов:

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="sale.xsl" xsl:import href="company.xsl" xsl:import href="category.xsl"?>

<!DOCTYPE catalog SYSTEM "stock.dtd">

<catalog>
<item>
    <id sale="yes">801</id>
    <company>Grocery Gateway</company>  
    <product>Organic Strawberries</product> 
    <category>Produce</category>    
    <description>Fresh and organic strawberries imported from U.S.A. This product is subject to availability</description>  
    <price>5.99</price>
    <sale>4.99</sale>
    <unit>454g</unit>
    <picture>pics/M6548[1].jpg</picture>
</item>
<item>
    <id sale="no">101</id>
    <company>Nestle </company>  
    <product>Pure Life Spring Water</product>   
    <category>Beverages</category>  
    <description>Ingredients are spring water, and ozone. </description>    
    <price>5.99</price>
    <sale>4.99</sale>
    <unit>24x500mL</unit>
    <picture>pics/M58629[1].jpg</picture>
</item></catalog> 

1 Ответ

0 голосов
/ 26 марта 2012

Причина, по которой он не отображает продажную цену должным образом, заключается в том, что вы неверно ссылаетесь на атрибут @sale.

<xsl:when test="@sale = 'yes'">

Вышеприведенное пытается найти атрибут с именем sale в текущемдля каждой итерации (в данном случае catalog/item, но атрибут не существует на этом узле в вашем XML).Вам нужно будет явно указать, что вы ищете его на узле id, например:

<xsl:when test="id/@sale = 'yes'">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...