【发布时间】:2011-05-26 18:21:12
【问题描述】:
我有一个使用无序列表显示导航的 HTML 文档。当它作为 XML 输出时,它不再使用列表,而是为每个链接分配一个<Description>。描述的工作方式是为主链接分配数字,如 100、200、300、400 等。这些子导航链接分配如下:200.100、200.200、200.300 等。
XML 如下所示:
<Items>
<PgIndexElementItem>
<Description>100</Description>
<Title>This is the Title</Title>
</PgIndexElementItem>
<PgIndexElementItem>
<Description>200</Description>
<Title>This is the Title</Title>
</PgIndexElementItem>
<PgIndexElementItem>
<Description>200.100</Description>
<Title>This is the Title</Title>
</PgIndexElementItem>
<PgIndexElementItem>
<Description>200.100.100</Description>
<Title>This is the Title</Title>
</PgIndexElementItem>
</Items>
如果你看最后一个 PgIndexElementItem,有三组数字。
我正在尝试使用 XSLT 重新创建无序列表。这是我迄今为止一直在做的事情:
<ul>
<xsl:for-each select="//PgIndexElementItem">
<xsl:if test="not(contains(Description, '.'))">
<li><a href="{ResolvedURL/ServerRelative}"><xsl:value-of select="Title"/></a>
<ul>
<xsl:for-each select="//PgIndexElementItem">
<xsl:if test="contains(Description, '.')">
<li><a href="{ResolvedURL/ServerRelative}"><xsl:value-of select="Title"/></a></li>
</xsl:if>
</xsl:for-each>
</ul>
</li>
</xsl:if>
</xsl:for-each>
</ul>
我的问题是,有没有办法指定 contains(Description 以两个句点为目标的描述,例如上面最后一个 PgIndexElementItem?
我希望我解释得足够好。我不知道如何使它不那么混乱。提前致谢!
编辑
o Graduate Program
* How to Apply
* Masters Program
o M.A. Handbook
o FAQs
o Alumni
o Masters Theses
o Sample Thesis Proposals
* M.A. Handbook
* FAQs
* Alumni
* Masters Theses
* Sample Thesis Proposals
【问题讨论】:
-
你的解析器支持 xpath 2 还是 xslt 2?
-
不确定。我怎么会发现呢?抱歉,有了这些东西的全新世界。
-
@jrottier,您使用什么技术运行此代码?
-
您的 XML 需要一个顶级元素,即 PgIndexElementItem 元素的父元素。例如。用
<root>...</root>包围整个事情。 -
有一个
<Items>元素围绕着所有 PgIndexElementItem 元素。上面还有很多,但为了简单起见,我没有列出它们。