преобразование XML-файла - PullRequest
0 голосов
/ 09 мая 2011

Как выполнить преобразование на стороне сервера для файла products.xml с использованием таблицы стилей XSLT. Результатом будет файл XML (item.xml) со следующей структурой: ocshelf = "yes" и type = "cosmetics"

products.xml ------------------------

<products>
<product onshelf=“yes” condition=“ok”>
<type>cosmetic</type>
<price>680</price>
<address>
<streetNo>1</streetNo>
<street>Jefer Street</street>
<suburb>Melbourne</suburb>
</address>
</product>
<product onshelf=“yes” condition=“ok”>
<type>noncosmetic</type>
<price>600</price>
<address>
<streetNo>2</streetNo>
<street>Colo Street</street>
<suburb>Melbourne</suburb>
</address>
</product>
</products>

item.xml ---------------------------------

<products>
<product condition=“ok”>
<type>cosmetic</type>
<price>680</price>
<address>1 Jefer Street , Melbourne </address>
</product>
</products>

1 Ответ

0 голосов
/ 09 мая 2011

Вы можете попробовать что-то вроде этого:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:xs="http://www.w3.org/2001/XMLSchema" 
                exclude-result-prefixes="xs" 
                version="2.0">
    <xsl:template match="/">
        <products>
            <xsl:apply-templates 
                select="/products/product[@onshelf='yes' and type='cosmetic']"/>
        </products>
    </xsl:template>
    <xsl:template match="product">
        <product condition="{@condition}">
            <xsl:apply-templates />
        </product>
    </xsl:template>
    <xsl:template match="address">
        <address>
            <xsl:value-of select="concat(streetNo, ' ', street, ', ', suburb)" />
        </address>
    </xsl:template>
    <xsl:template match="node()|@*">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

Если вы новичок в XSLT, я рекомендую взглянуть на эту ветку для предложений учебника: https://stackoverflow.com/questions/1858345/xsltwhich-is-the-best-tutorial-you-would-like-to-recommend.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...