У меня был небольшой опыт работы с XSL, но сейчас мне нужно немного больше моих навыков, и я немного запутался в том, как справиться с этим.Я также осмотрел этот сайт и не думаю, что нашел что-то совсем похожее ... хотя я могу ошибаться!
Для начала, вот некоторый XML, который генерирует моя страница:
<root>
<content>
<Title>Title 1 here</Title>
<Image>Image Link 1 here</Image>
<Description>Description 1 here</Description>
<Category>Special Exhibitions</Category>
<Priority>2</Priority>
</content>
<content>
<Title>Title 2 here</Title>
<Image>Image Link 2 here</Image>
<Description>Description 2 here</Description>
<Category>Special Exhibitions</Category>
<Priority>1</Priority>
</content>
<content>
<Title>Title 3 here</Title>
<Image>Image Link 3 here</Image>
<Description>Description 3 here</Description>
<Category>Live Music</Category>
<Priority>9</Priority>
</content>
<content>
<Title>Title 4 here</Title>
<Image>Image Link 4 here</Image>
<Description>Description 4 here</Description>
<Category>Lecture</Category>
<Priority>7</Priority>
</content>
<content>
<Title>Title 5 here</Title>
<Image>Image Link 5 here</Image>
<Description>Description 5 here</Description>
<Category>Special Exhibitions</Category>
<Priority>3</Priority>
</content>
<content>
<Title>Title 6 here</Title>
<Image>Image Link 6 here</Image>
<Description>Description 6 here</Description>
<Category>Workshop</Category>
<Priority>10</Priority>
</content>
<content>
<Title>Title 7 here</Title>
<Image>Image Link 7 here</Image>
<Description>Description 7 here</Description>
<Category>Special Exhibitions</Category>
<Priority>6</Priority>
</content>
</root>
По сути, каждый элемент <content>
имеет различных дочерних элементов, включая <Category>
и <Priority>
.
. Моя проблема заключается в том, что я хочу выбрать только первый узел с <Category=Special Exhibition>
,упорядочено по <Priority>
, так что в данном случае, «Заголовок 2».
Вот что я имею в качестве XSL:
<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="/">
<xsl:apply-templates select="root/EventType/Type">
</xsl:apply-templates>
</xsl:template>
<xsl:template match="Type">
<xsl:variable name="categoryType" select="." />
<xsl:apply-templates select="../../content[Category=$categoryType]">
</xsl:apply-templates>
</xsl:template>
<xsl:template match="/">
<xsl:for-each select="root/content">
<xsl:sort data-type="number" order="ascending" select="Priority"/>
<xsl:if test="(Category='Special Exhibitions')">
<xsl:choose>
<xsl:when test="(position()=1)">
<div class="slide-container">
<img style="margin-top:18px;" src="{BannerImage}" alt="{Title}" title="{Title}"/>
<span>
<xsl:attribute name="class">
<xsl:text>slide-caption</xsl:text>
</xsl:attribute>
<xsl:value-of select="Title"></xsl:value-of>
<xsl:text> | </xsl:text>
<xsl:value-of select="Date"></xsl:value-of>
</span>
</div>
</xsl:when>
</xsl:choose>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Очевидно, что моя проблема где-то внутри <xsl:if>
и <xsl:when>
раздел.Вот как мой разум думает о поиске узла, но, очевидно, не так, как XSL!Кто-нибудь может дать мне указатель о том, как атаковать это?
Большое спасибо заранее -