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)式の評価では、の文字列値が、属性に文字列値があり、XMLドキュメントの最上位要素の子である要素の子である要素の文字列値と等しいtrue()
かどうかが生成されます。ファイルに含まれています。$myVar
a
li
class
"closed"
fileName.inc
ファイルに整形式の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