Обнаружил весьма экзотическую ошибку с XML/XSLT-процессинговой частью в Opera. Вот код: | Код | var xml = new DOMParser().parseFromString('<?xml version="1.0" encoding="UTF-8"?><foo><bar><link foo="bar"><foo /></link></bar></foo>', 'text/xml'), xsl = new DOMParser().parseFromString('<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><xsl:output encoding="UTF-8" method="xml" /><xsl:template match="//bar"><xsl:copy-of select="." /></xsl:template></xsl:stylesheet>', 'text/xml'), processor = new XSLTProcessor(); processor.importStylesheet(xsl); alert(new XMLSerializer().serializeToString(processor.transformToDocument(xml)));
|
Задача в следующем: имея одну XML-строку, нужно вытащить из неё определённый контейнер в виде новой XML-строки. В данном примере это контейнер bar. Если запустить вышеприведённый код в Opera (перепробовал несколько версий 9xx, включая 9.24), то она вылетает с фатальной ошибкой. А теперь самое интересное: если этот участок исходного XML | Код | <link foo="bar"><foo /></link> |
модифицировать одним из следующих или другим подобным образом: или | Код | <link foo="bar"></link> |
или | Код | <link1 foo="bar"><foo /></link1> |
то всё работает нормально! Как вам этот зоопарк?
|