Клуб API Карт

Обработка ответа геокодера XSLT шаблоном

Antichniy2010
26 декабря 2012, 01:33

Перерыл весь интернет не нашёл ответа на свой вопрос.

Хочу сделать на сайте обработку ответа от геокодера по XSLT. Получаю саму XML нормально, могу поместить её в textarea и там всё нормально отображается, но вот почему то когда пробую достучаться до какой нибудь её ноды получаю тишину.

Получаю таким образом

 

<xsl:apply-templates select="document('http://geocode-maps.yandex.ru/1.x/?geocode=moskva')" mode="geo"/>

 обрабатываю вот так:

 

    <xsl:template match="/" mode="geo">
        <textarea style="width:640; height:100">
            <xsl:copy-of select="."/>
        </textarea>
        <br />
        <textarea style="width:640; height:100">
            <xsl:copy-of select="//GeoObjectCollection"/>
        </textarea>
        <br />
    </xsl:template>

 первая textarea через точку выводит XML, в которой есть нода GeoObjectCollection, вторая ничего не выводит. К сожалению с XSLT знаком не так давно и не могу сам разобарться.

Интересно ещё то, что если проматривать адрес http://geocode-maps.yandex.ru/1.x/?geocode=moskva в лисе с установленным firepath то можно увидеть что все ноды в ответе пишуться с префиксами, например  x:ymaps, <x:GeoObjectCollection>.
Помогите пожалуйста. 

1 комментарий
Подписаться на комментарии к посту

1. Лучше сразу указать какой xslt процессор используется для трансформаций (есть особенности)

2. это не префикс это неймспэйс

его надо указывать и не забыть объявить или писать предикат через local-name()

типа

*[local-name() = 'GeoObjectCollection']