2011-01-27 6 views
1

Webkitは、XSLTを処理しているときに空白で特にうまく動作しないようです。 substring-after('test string','
')stringを返す点まで、改行、復帰、タブ、スペースを均等に扱うようです。Webkitのjavascriptで空白を正しく処理する方法はありますか?

正常に動作する方法はありますか、これは回避策がないWebkitのバグですか?

編集:ここではエラーを示し、いくつかのjavascriptだ:

var parser = new DOMParser(); 
var xsltText = "<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"version=\"1.0\"><xsl:template match=\"test\"><output><xsl:value-of select=\"string-length(substring-after(., '&#10;'))\"/></output></xsl:template></xsl:stylesheet>"; 
var xslt = parser.parseFromString(xsltText, "text/xml"); 
var xmlText = "<test>test string</test>"; 
var xml = parser.parseFromString(xmlText, "text/xml"); 
var xsltProcessor = new XSLTProcessor(); 
xsltProcessor.importStylesheet(xslt); 
var processed = xsltProcessor.transformToDocument(xml); 
var result = processed.firstChild.textContent; 

result変数は明らかに '0' を含める必要があります。 Safari 4とChrome 8では「6」を返します。

+0

これはWebKitバグとしてhttps://bugs.webkit.org/show_bug.cgi?id=53375で報告されており、バグレポートはこのStackOverflow質問を参照しています。 –

答えて

0

Safari 5.0.3でこの問題を再現できません。 テストケース(XMLドキュメントがブラウザウィンドウにロードされた):

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="test2011012801Xsl.xml"?> 
<test>foo bar</test> 

スタイルシートは、Windows上のFirefox(3.6)とSafariの両方で

<xsl:stylesheet 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0"> 

    <xsl:template match="/"> 
    <html> 
     <head> 
     <title>Test</title> 
     </head> 
     <body> 
     <xsl:apply-templates/> 
     </body> 
    </html> 
    </xsl:template> 

    <xsl:template match="test"> 
    <p><xsl:value-of select="string-length(substring-after(., '&#10;'))"/></p> 
    </xsl:template> 

</xsl:stylesheet> 

出力は "0" です。したがって、少なくともそのテストでは、テキストノード内の空白文字が改行文字として扱われるという証拠はありません。

+0

私はまずChromeでこのことに気付きました。確かに私がテストしているSafariのバージョンは4.0.2ですが、5.0.3では新しいバージョンのWebkitを使用している可能性があります。 – Flynn1179

+0

Safariのバージョンでテストケースを実行できますか? 0とは異なる数値を出力していますか?その場合、そのバージョンのSafariにバグがあります。また、あなたが問題があるChromeバージョン番号を投稿すると、他の人が再現しようとするのに役立ちます。 –

+0

@ Flynn1179:Chrome(10.0.648.6デベロッパー)でもテスト済みです。出力: 'テスト'。 XML文書はXMLパーサーを経由するので、XSLTプロセッサーのコンテキストを設定するのはその責任です。 Emacscriptの呼び出しとの違いが生じるかもしれません。 –

関連する問題