XSLT, XML, For-Each с атрибутами и элементами - PullRequest
0 голосов
/ 01 ноября 2010

Я нашел учебники по использованию отображения значений элементов с использованием XSLT, но я борюсь с атрибутами Вот мой XML-документ.

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="PrintListStyleSheet.xsl"?>
<PrinterDirectory>
<Country Name = "UK">
<Region Name="Birmingham">
<Building Name="Brindley Place" url="Brindley.htm"/>
<Building Name="Solihull TE" url="Solihull.htm"/>
<Building Name="Midland ATE" url="MidlandATE.html"/>
 <Building Name="Redditch" url="Redditch.html"/>
</Region>
<Region Name="Wolverhampton">
<Building Name="Wolverhampton TE" url="WolverhamptonTE.htm"/>
</Region>
<Region Name="Cardiff">
<Building Name="Park Gate" url="CardiffParkGate.htm"/>
<Building Name="Cardiff Bay Data Centre " url="CardiffParkGate.htm"/>
</Region>
   </Country>
 </PrinterDirectory>

Я пытаюсь отобразить список регионов. И.Е.

  • Бирмингем
    • Бриндли Плейс
    • Solihull ATE
  • Вулверхэмптон
  • Кардифф

Как мне это сделать?

1 Ответ

3 голосов
/ 01 ноября 2010

Эта таблица стилей:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="PrinterDirectory">
        <ul>
            <xsl:apply-templates/>
        </ul>
    </xsl:template>
    <xsl:template match="Country|Region">
        <li>
            <p>
                <xsl:value-of select="@Name"/>
            </p>
            <ul>
                <xsl:apply-templates/>
            </ul>
        </li>
    </xsl:template>
    <xsl:template match="Building">
        <li>
            <xsl:value-of select="@Name"/>
        </li>
    </xsl:template>
</xsl:stylesheet>

Вывод:

<ul>
    <li>
        <p>UK</p>
        <ul>
            <li>
                <p>Birmingham</p>
                <ul>
                    <li>Brindley Place</li>
                    <li>Solihull TE</li>
                    <li>Midland ATE</li>
                    <li>Redditch</li>
                </ul></li>
            <li>
                <p>Wolverhampton</p>
                <ul>
                    <li>Wolverhampton TE</li>
                </ul></li>
            <li>
                <p>Cardiff</p>
                <ul>
                    <li>Park Gate</li>
                    <li>Cardiff Bay Data Centre </li>
                </ul></li>
        </ul></li>
</ul>

Редактировать : повышение производительности с xsl:value-of

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