The condition is that the extension needs to be .inc, which also means it's not going to be a valid XML
延伸在文件名並不意味着內容不能是格式良好的XML文檔。
由於提供的示例是完整格式良好的XML片段,因此您需要安排將此片段封裝到單個頂層元素中。
然後,只需使用document()
功能:
$myVar = document('fileName.inc')/*/li[@class = 'closed']/a
這個XPath(1.0)表達的評價產生true()
如果$myVar
字符串值等於一個a
元件,其的字符串值li
元素的子元素,其class
屬性的字符串值爲"closed"
,該元素是文件fileName.inc
中包含的XML文檔的頂層元素的子元素。
如果真的不能aranged該文件包含一個格式良好的XML文檔,使用unparsed-text()
和xsl:analyze-string
。
下面是一個完整變換:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="vText" select=
"unparsed-text('file:///c:/temp/delete/fileName.inc')"/>
<xsl:template match="/">
<xsl:analyze-string select="$vText" regex=">([^<]*)</a>" flags="m">
<xsl:matching-substring>
<value><xsl:value-of select="regex-group(1)"/></value>
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:template>
</xsl:stylesheet>
當這種轉化是在任何XML文檔(未使用)施加它處理的文件:c:\temp\delete\fileName.inc
其中包含所提供的文本:
<li class="closed"><a title="x" href="x.html">x</a></li>
<li class="closed"><a title="y" href="y.html">y</a></li>
<li class="closed"><a title="z" href="a.html">z</a></li>
和想要的,正確的結果產生:
<value>x</value>
<value>y</value>
<value>z</value>
這裏是如何將一個變量比較提取值:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="vText" select=
"unparsed-text('file:///c:/temp/delete/fileName.inc')"/>
<xsl:param name="vSearchValue" select="'y'"/>
<xsl:template match="/">
<xsl:variable name="vExtracted" as="element()*">
<xsl:analyze-string select="$vText" regex=">([^<]*)</a>" flags="m">
<xsl:matching-substring>
<value><xsl:value-of select="regex-group(1)"/></value>
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:variable>
<xsl:sequence select="$vSearchValue = $vExtracted"/>
</xsl:template>
</xsl:stylesheet>
當這種轉變是在任何XML文檔(未使用)應用,在想,正確的結果產生:
true
非常感謝!你們兩個都是對的。 – Vinit 2012-08-20 15:33:37
@Vinit,不客氣。 – 2012-08-20 15:58:37
你總是幫助解決XSL問題。你還能看到我今天發佈的這個問題嗎? http://stackoverflow.com/questions/12410876/float-image-in-pdf-using-xslfo在此先感謝! :) – Vinit 2012-09-13 18:17:07