Я пытался выяснить, что не так с этим фрагментом кода, но через 4 часа я сдаюсь! Я перепробовал множество различных решений здесь на stackoverflow и из разных источников, но ни одно из них не сработало.
Все, что я пытаюсь сделать, это поместить значение "gml: координаты" в атрибут "точка". Я думаю, это как-то связано с пространством имен. Или что-то еще ...
XML-файл:
<?xml version="1.0" encoding="ISO-8859-1"?>
<gml:LineString>
<gml:coordinates>-7 -7 0 7 -7 0 7 7 0 -7 7 0</gml:coordinates>
</gml:LineString>
XSL-файл:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:gml="http://www.opengis.net/gml">
<xsl:template match="/gml:LineString">
<Transform>
<Shape>
<IndexedFaceSet>
<xsl:attribute name="coordIndex">
<xsl:text>0 1 2 3 -1</xsl:text>
</xsl:attribute>
<Coordinate>
<xsl:attribute name="point">
<xsl:text>
<xsl:value-of select="/gml:coordinates" />
</xsl:text>
</xsl:attribute>
</Coordinate>
</IndexedFaceSet>
</Shape>
</Transform>
</xsl:template>
</xsl:stylesheet>
И сценарий Ajax (возвращает правильные результаты, если для атрибута установлено значение "-7 -7 0 7 -7 0 7 7 0 -7 7 0" insted of "/ gml: координаты"):
var xml = document.implementation.createDocument("", "", null);
var xsl = document.implementation.createDocument("", "", null);
xml.async = false;
xsl.async = false;
xml.load("xsl/ajax.xml");
xsl.load("xsl/ajax.xsl");
var processor = new XSLTProcessor();
processor.importStylesheet(xsl);
var output = processor.transformToFragment(xml, document);
document.getElementById("scene").appendChild(output);
Заранее спасибо.