1

xmlファイルに適用すると、xslファイルがあります。で、Internet Explorer で見ると、エラーが出ます。

Expected token ']' found 'NAME'. threshold[substring-before(normalize-space(), ' ')-->castable <--as xs:integer]

これが私のxslファイルです。

<xsl:template match="threshold[substring-before(normalize-space(), ' ')castable as xs:integer]">
<xsl:variable name="vNorm" select = "translate(normalize-space(), '%', '')"/>
<xsl:variable name="vAtUnit" select = "substring-after($vNorm, ' ')"/>
<xsl:variable name="vUnit" select ="replace($vAtUnit, '([^0123456789]+)(\d*)', '$1')"/>
<xsl:variable name="vLastPart" as="xs:string" select ="substring-after($vAtUnit, $vUnit)"/>
<xsl:variable name="vNum" select="concat($vLastPart, '100'[not($vLastPart)])"/>
    <threshold>
        <t-r-value><xsl:value-of select="substring-before(., ' ')"/></t-r-value>
        <unit><xsl:value-of select="normalize-space($vUnit)"/></unit>
        <samplepct><xsl:value-of select="$vNum"/></samplepct>
    </threshold>
    <xsl:call-template name="tested"></xsl:call-template>
</xsl:template>
<xsl:template name="tested">
<xsl:for-each select="../following-sibling::interval-repeats[1]/ repeat[ count(current()/preceding-sibling::threshold) + 1]" >
<xsl:variable name="vNormrep" select = "translate(normalize-space(), '%', '')"/>
<xsl:variable name="vAtUnitrep" select = "substring-after($vNormrep, ' ')"/>
<xsl:variable name="vUnitrep" select ="replace($vAtUnitrep, '([^0123456789]+)(\d*)', '$1')"/>
<xsl:variable name="vLastPart" as="xs:string" select ="substring-after($vAtUnitrep, $vUnitrep)"/>
<xsl:variable name="vNumrep" select="concat($vLastPart, '100'[not($vLastPart)])"/>
    <repeat>
        <t-r-value><xsl:value-of select="substring-before(., ' ')"/></t-r-value>
        <unit><xsl:value-of select="normalize-space($vUnitrep)"/></unit>
        <samplepct><xsl:value-of select="$vNumrep"/></samplepct>
    </repeat>
</xsl:for-each>

誰でもここで私を助けることができますか?

よろしくお願いします

4

2 に答える 2

2

ブラウザーは XSLT 1.0 といくつかの EXSLT 拡張機能のみをサポートします。XSLT 2.0 を使用する場合は、Saxon 9、AltovaXML、または XmlPrime などの XSLT 2.0 プロセッサを使用する必要があります。XSLT 2.0 クライアント側を使用する場合は、Saxon CE http://www.saxonica.com/ce/download.xmlがオプションかどうかを確認できます。

[編集] XSLT 1.0 で整数チェックを実装しようとする場合は、次のように試すことができます。

<xsl:template match="threshold[not(translate(substring-before(normalize-space(), ' '), '0123456789', ''))]">

そのチェックは数字を削除し、結果が整数をチェックするのに十分な空の文字列であるかどうかをチェックします

于 2012-08-30T10:07:43.380 に答える
1

文字列が整数にキャスト可能かどうかを確認するための1つの短いXPath式は次のとおりです。

$x = floor($x)

別の回答ですでに述べたように、主要な5つのブラウザーはいずれもXSLT2.0をサポートしていません。現在、ブラウザでXSLT 2.0を使用する方法は、SaxonCEによって提供されています

于 2012-08-30T12:52:41.057 に答える