【发布时间】:2013-01-08 23:11:50
【问题描述】:
我有一个包含以下内容的 nav.inc 文件:
<a href="/index.html" rel="external" ><img src="/images/ns.png" alt="Sample Page"/><span class="title" >Demo</span></a>
<a href="/demo.html" rel="external" ><img src="/images/missions.png" alt="Sample Page"/><span class="title" >Demo2</span></a>
<a href="/mobile.html" rel="external" ><img src="/images/ons.png" alt="Sample Page"/><span class="title" >Demo3</span></a>
.
.
.
等等
我想通过 XSL 为这些列表元素中的每一个获取节点和 @href 的值,并构建一个类似
的结构<li><a href="/index.html" rel="external">Demo</a></li>
.
.
我知道可以这样做:
<xsl:variable name="vText" select="unparsed-text('nav.inc')"/>
和类似的东西:
<xsl:variable name="vExtracted" as="xs:token*">
<xsl:analyze-string select="$vText" regex="" flags="m">
<xsl:matching-substring>
<xsl:value-of select="regex-group(1)"/>
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:variable>
然后像
<xsl:for-each select="$vExtracted">
<li><xsl:value-of select="."/></li>
</xsl:for-each >
我不擅长正则表达式。高度赞赏解决此问题的任何帮助。
【问题讨论】:
-
为此使用 RegEx 没有意义。请参阅 Michael Kay 的简单而优雅的答案。借助 XSLT 3.0 处理器,您可以使用新的标准 XPath 3.0 函数
parse-xml()在转换内部执行解析。
标签: xml regex xslt xml-parsing xslt-2.0