2011-01-27 2 views
1

웹킷이 XSLT를 처리하는 동안 공백으로 특히 잘 작동하지 않는 것으로 나타났습니다. substring-after('test string','
')string을 반환하는 지점까지도 줄 바꿈, 캐리지 리턴, 탭 및 공백을 똑같이 처리하는 것으로 보입니다.공백을 올바르게 처리하기 위해 웹킷의 JavaScript를 얻는 방법이 있습니까?

제대로 작동하도록하는 방법이 있습니까? 아니면 해결 방법이없는 webkit의 버그입니까?

편집 : 여기에 오류가 보여 일부 자바 스크립트입니다 :

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

이것은 웹킷 버그로 https://bugs.webkit.org/show_bug.cgi?id=53375에서보고되며 버그 보고서는이 StackOverflow 질문을 참조합니다. –

답변

0

Safari 5.0.3에서이 문제를 재현 할 수 없습니다. 테스트 케이스 (XML 문서를 브라우저 창에로드가) : 스타일 시트는 Windows에서 모두 파이어 폭스 (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"

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

입니다. 따라서 최소한 테스트에서 텍스트 노드의 공백 문자가 개행 문자로 취급된다는 증거는 없습니다.

+0

크롬에서 처음 알았습니다 .. 제가 테스트 한 사파리의 버전은 4.0.2이며, 5.0.3에서는 새로운 버전의 웹킷을 사용하고 있습니다. – Flynn1179

+0

Safari 버전에서 테스트 케이스를 실행할 수 있습니까? 그것은 0과 다른 숫자를 출력합니까? 이 경우 사파리 버전에 버그가 있습니다. 또한 문제가있는 Chrome 버전 번호를 게시하면 다른 사람들이 재현하려고하는 데 도움이됩니다. –

+0

@ Flynn1179 : Chrome (10.0.648.6 dev)에서도 테스트되었습니다. 출력 :' 테스트

0

'. XML 문서는 XML 파서를 거치며 XSLT 프로세서의 컨텍스트를 설정하는 것은 XML 사용자의 책임입니다. Emacscript 호출과 차이가있을 수 있습니다. –

관련 문제