Модераторы: diadiavova
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XML некоректное отображение, выводится как текстовый файл=( 
:(
    Опции темы
BBALL
Дата 4.12.2007, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 3.12.2007

Репутация: нет
Всего: нет



Здраствуйте!
Есть шапка XML 

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type='text/xsl' href='pravilo.xsl'?>


к которому приклеен XSL

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs xsi xsl">
    <xsl:output method="xml" encoding="windows-1251" indent="no"/>
    <xsl:template match="/">
            <MOD>
            ...
            </MOD>
    </xsl:template>
</xsl:stylesheet>


Когда пропускаю через парсер в XMLSpy на выходе получается корректный XMLoutput файл. 
Вопрос - Почему когда мы обращаемся к XML без парсера на прямую через браузер, XML отображается как txt файл...что нужно дописать что бы браузер понимал правила преобразхования без участия парсера? Может какой косяк в методе output?

Это сообщение отредактировал(а) BBALL - 4.12.2007, 14:10
PM MAIL   Вверх
BBALL
Дата 5.12.2007, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 3.12.2007

Репутация: нет
Всего: нет



Возможно я чего то не понимаю... Почему XML с сылкой на правила XSL в результате показывает текстовый файл? Причем в MSWord все как надо, а браузеры IE OPERA тупят! Ответте кто нибудь...для корректного отображения обязательно пропускать XML через парсер XMLSpy или всетаки есть выход?
Подскажите плиз smile 
PM MAIL   Вверх
mishaSL
Дата 5.12.2007, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 1
Всего: 54



BBALL, попробуй в output метод html поставить т.е.:
Код

<xsl:output method="html" encoding="windows-1251" indent="no"/>


но такой вариант вывода не будет работать во всех браузерах.



--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
cruelangel
Дата 5.12.2007, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: нет
Всего: 8



обращаешься к локальному файлу или через веб-сервер? расширение файла какое?
PM MAIL   Вверх
BBALL
Дата 6.12.2007, 07:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 3.12.2007

Репутация: нет
Всего: нет



2 mishaSL 
твой вариант непашет.

2 cruelangel файл локальный, расширение .XML
PM MAIL   Вверх
BBALL
Дата 6.12.2007, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 3.12.2007

Репутация: нет
Всего: нет



Вот конкреттный урезаный пример
Исходный XML
Код

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type='text/xsl' href="C:\Documents\1C_to_NAV6.xsl"?>
<ФайлОбмена ВерсияФормата="2.0" ДатаВыгрузки="2007-11-22T17:07:15" НачалоПериодаВыгрузки="0001-01-01T00:00:00" ОкончаниеПериодаВыгрузки="0001-01-01T00:00:00" ИмяКонфигурацииИсточника="БухгалтерияПредприятия" ИмяКонфигурацииПриемника="БухгалтерияПредприятия" ИдПравилКонвертации="a693706a-e7dd-4b91-ab8a-037480224f34" Комментарий="">
    
    <Объект Нпп="2" Тип="СправочникСсылка.КлассификаторЕдиницИзмерения" ИмяПравила="КлассификаторЕдиницИзмерения">
        <Ссылка Нпп="2">
            <Свойство Имя="{УникальныйИдентификатор}" Тип="Строка">
                <Значение>329208a7-f656-11d8-b105-00055d80a2b9</Значение>
            </Свойство>
            <Свойство Имя="Код" Тип="Строка">
                <Значение>796</Значение>
            </Свойство>
        </Ссылка>
        <Свойство Имя="Наименование" Тип="Строка">
            <Значение>шт</Значение>
        </Свойство>
        <Свойство Имя="НаименованиеПолное" Тип="Строка">
            <Значение>Штука</Значение>
        </Свойство>
        <Свойство Имя="ПометкаУдаления" Тип="Булево">
            <Пусто/>
        </Свойство>
    </Объект>
    <Объект Нпп="3" Тип="СправочникСсылка.НоменклатурныеГруппы" ИмяПравила="НоменклатурныеГруппы">
        <Ссылка Нпп="3">
            <Свойство Имя="{УникальныйИдентификатор}" Тип="Строка">
                <Значение>329208a3-f656-11d8-b105-00055d80a2b9</Значение>
            </Свойство>
            <Свойство Имя="Код" Тип="Строка">
                <Значение>00001    </Значение>
            </Свойство>
        </Ссылка>
        <Свойство Имя="Наименование" Тип="Строка">
            <Значение>Основная номенклатурная группа</Значение>
        </Свойство>
        <Свойство Имя="ПометкаУдаления" Тип="Булево">
            <Пусто/>
        </Свойство>
    </Объект>
    <Объект Нпп="4" Тип="СправочникСсылка.Номенклатура" ИмяПравила="Номенклатура">
        <Ссылка Нпп="4">
            <Свойство Имя="{УникальныйИдентификатор}" Тип="Строка">
                <Значение>020386a2-056c-11d9-9a45-000d884f5d77</Значение>
            </Свойство>
            <Свойство Имя="Код" Тип="Строка">
                <Значение>00009    </Значение>
            </Свойство>
            <Свойство Имя="ЭтоГруппа" Тип="Булево">
                <Значение>true</Значение>
            </Свойство>
        </Ссылка>
        <Свойство Имя="Наименование" Тип="Строка">
            <Значение>Оборудование (объекты основных средств)</Значение>
        </Свойство>
        <Свойство Имя="ПометкаУдаления" Тип="Булево">
            <Пусто/>
        </Свойство>
        <Свойство Имя="Родитель" Тип="СправочникСсылка.Номенклатура">
            <Пусто/>
        </Свойство>
    </Объект>
    <Объект Нпп="1" Тип="СправочникСсылка.Номенклатура" ИмяПравила="Номенклатура">
        <Ссылка Нпп="1">
            <Свойство Имя="{УникальныйИдентификатор}" Тип="Строка">
                <Значение>279fff0c-573f-11da-84c9-0011955c1b38</Значение>
            </Свойство>
            <Свойство Имя="Код" Тип="Строка">
                <Значение>00071    </Значение>
            </Свойство>
            <Свойство Имя="ЭтоГруппа" Тип="Булево">
                <Пусто/>
            </Свойство>
        </Ссылка>
        <Свойство Имя="БазоваяЕдиницаИзмерения" Тип="СправочникСсылка.КлассификаторЕдиницИзмерения">
            <Ссылка Нпп="2">
                <Свойство Имя="{УникальныйИдентификатор}" Тип="Строка">
                    <Значение>329208a7-f656-11d8-b105-00055d80a2b9</Значение>
                </Свойство>
                <Свойство Имя="Код" Тип="Строка">
                    <Значение>796</Значение>
                </Свойство>
            </Ссылка>
        </Свойство>
        <Свойство Имя="Комментарий" Тип="Строка">
            <Пусто/>
        </Свойство>
        <Свойство Имя="Наименование" Тип="Строка">
            <Значение>Станок шлифовальный</Значение>
        </Свойство>
        <Свойство Имя="НаименованиеПолное" Тип="Строка">
            <Значение>Станок шлифовальный</Значение>
        </Свойство>
        <Свойство Имя="НоменклатурнаяГруппа" Тип="СправочникСсылка.НоменклатурныеГруппы">
            <Ссылка Нпп="3">
                <Свойство Имя="{УникальныйИдентификатор}" Тип="Строка">
                    <Значение>329208a3-f656-11d8-b105-00055d80a2b9</Значение>
                </Свойство>
                <Свойство Имя="Код" Тип="Строка">
                    <Значение>00001    </Значение>
                </Свойство>
            </Ссылка>
        </Свойство>
        <Свойство Имя="НомерГТД" Тип="СправочникСсылка.НомераГТД">
            <Пусто/>
        </Свойство>
        <Свойство Имя="ПометкаУдаления" Тип="Булево">
            <Пусто/>
        </Свойство>
        <Свойство Имя="Родитель" Тип="СправочникСсылка.Номенклатура">
            <Ссылка Нпп="4">
                <Свойство Имя="{УникальныйИдентификатор}" Тип="Строка">
                    <Значение>020386a2-056c-11d9-9a45-000d884f5d77</Значение>
                </Свойство>
                <Свойство Имя="Код" Тип="Строка">
                    <Значение>00009    </Значение>
                </Свойство>
                <Свойство Имя="ЭтоГруппа" Тип="Булево">
                    <Значение>true</Значение>
                </Свойство>
            </Ссылка>
        </Свойство>
        <Свойство Имя="СтавкаНДС" Тип="ПеречислениеСсылка.СтавкиНДС">
            <Значение>НДС18</Значение>
        </Свойство>
        <Свойство Имя="СтранаПроисхождения" Тип="СправочникСсылка.КлассификаторСтранМира">
            <Пусто/>
        </Свойство>
        <Свойство Имя="Услуга" Тип="Булево">
            <Пусто/>
        </Свойство>
    </Объект>
</ФайлОбмена>



XSL разметка
Код

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs xsi xsl">
    <xsl:output method="xml" encoding="windows-1251" />
    <xsl:template match="/">
        <xsl:variable name="varSpr">Справочник</xsl:variable>
        <xsl:variable name="varSpr1">СправочникСсылка</xsl:variable>
        <xsl:variable name="varSnz1">СтавкаНДС</xsl:variable>
        <xsl:variable name="varSnz2">Наименование</xsl:variable>
        <xsl:variable name="varSnz22">НаименованиеПолное</xsl:variable>
        <xsl:variable name="varSnz23">Полное</xsl:variable>
        <xsl:variable name="varSnz3">ПометкаУдаления</xsl:variable>
        <xsl:variable name="varSnz4">Родитель</xsl:variable>
        <xsl:variable name="varSnz5">СтранаПроисхождения</xsl:variable>
        <xsl:variable name="varSnz6">Услуга</xsl:variable>
        <xsl:variable name="varDoc">Документ</xsl:variable>
        <xsl:variable name="varUid1">Код</xsl:variable>
        <xsl:variable name="varUid2">{УникальныйИдентификатор}</xsl:variable>
        <xsl:variable name="varUid3">ЭтоГруппа</xsl:variable>    
        <MOD>
            <Документы>
      </Документы>
            <Справочники>
                <xsl:for-each select="ФайлОбмена//Объект">
                    <xsl:text disable-output-escaping="yes">&lt;</xsl:text>
                    <xsl:value-of select="@ИмяПравила"/>
                    <xsl:text disable-output-escaping="yes">&gt;</xsl:text>
                    <xsl:variable name="varStarted">
                        <xsl:value-of select="@Тип"/>
                    </xsl:variable>
                    <xsl:if test="starts-with($varStarted,$varSpr)">
                        <xsl:for-each select="Свойство">
                            <xsl:variable name="varSerch">
                                <xsl:value-of select="@Имя"/>
                            </xsl:variable>
                            <xsl:if test="starts-with($varSerch,$varSnz1)">
                                <СтавкаНДС>
                                    <xsl:value-of select="Значение"/>
                                </СтавкаНДС>
                            </xsl:if>
                            <xsl:if test="starts-with($varSerch,$varSnz5)">
                                <СтранаПроисхожения>
                                    <xsl:value-of select="Значение"/>
                                </СтранаПроисхожения>
                            </xsl:if>
                            <xsl:if test="starts-with($varSerch,$varSnz5)">
                                <Услуга>
                                    <xsl:value-of select="Значение"/>
                                </Услуга>
                            </xsl:if>
                            <xsl:if test="contains($varSerch,$varSnz2)">
                                <xsl:if test="not(contains($varSerch,$varSnz23))">
                                    <!--Не нашел, Операцию НЕРАВЕНСТВА, ТЬОГДА БУДЕТ РАБОТАТЬ! -->
                                    <Наименование>
                                        <xsl:value-of select="Значение"/>
                                    </Наименование>
                                </xsl:if>
                            </xsl:if>
                            <xsl:if test="starts-with($varSerch,$varSnz22)">
                                <xsl:if test="contains($varSerch,$varSnz23)">
                                    <ПолнНаименование>
                                        <xsl:value-of select="Значение"/>
                                    </ПолнНаименование>
                                </xsl:if>
                            </xsl:if>
                            <xsl:if test="starts-with($varSerch,$varSnz3)">
                                <ПометкаУдаления>
                                    <xsl:value-of select="Значение"/>
                                </ПометкаУдаления>
                            </xsl:if>
                            <xsl:if test="starts-with($varSerch,$varSnz3)">
                                <Родитель>
                                    <xsl:value-of select="Значение"/>
                                </Родитель>
                            </xsl:if>
                            <xsl:variable name="varVklad">
                                <xsl:value-of select="@Имя"/>
                            </xsl:variable>
                            <xsl:if test="starts-with($varVklad,$varUid1)">
                                <Код>
                                    <xsl:value-of select="Значение"/>
                                </Код>
                            </xsl:if>
                            <xsl:if test="starts-with($varVklad,$varUid3)">
                                <_ЭтоГруппа>
                                    <xsl:value-of select="Значение"/>
                                </_ЭтоГруппа>
                            </xsl:if>
                        </xsl:for-each>
                        <xsl:for-each select="Ссылка//Свойство">
                            <xsl:variable name="varKod">
                                <xsl:value-of select="@Имя"/>
                            </xsl:variable>
                            <xsl:if test="starts-with($varKod,$varUid1)">
                                <Код>
                                    <xsl:value-of select="Значение"/>
                                </Код>
                            </xsl:if>
                            <!--    <xsl:if test="starts-with($varKod,$varUid2)">
                                    <УникальныйИдентификатор><xsl:value-of select="Значение"/></УникальныйИдентификатор>
                                </xsl:if> Вырезанно за нинадолбностью=)-->
                            <xsl:if test="starts-with($varKod,$varUid3)">
                                <_ЭтоГруппа>
                                    <xsl:value-of select="Значение"/>
                                </_ЭтоГруппа>
                            </xsl:if>
                        </xsl:for-each>
                        <xsl:text disable-output-escaping="yes">&lt;/</xsl:text>
                        <xsl:value-of select="@ИмяПравила"/>
                        <xsl:text disable-output-escaping="yes">&gt;</xsl:text>
                    </xsl:if>
                </xsl:for-each>
            </Справочники>
            <Фильтр/>
            <Объекты>
                <Фильтр/>
            </Объекты>
        </MOD>
    </xsl:template>
</xsl:stylesheet>


Output через XMLSpy парсер
Код

  <?xml version="1.0" encoding="windows-1251" ?> 
- <MOD>
  <Документы /> 
- <Справочники>
- <КлассификаторЕдиницИзмерения>
  <Наименование>шт</Наименование> 
  <ПолнНаименование>Штука</ПолнНаименование> 
  <ПометкаУдаления /> 
  <Родитель /> 
  <Код>796</Код> 
  </КлассификаторЕдиницИзмерения>
- <НоменклатурныеГруппы>
  <Наименование>Основная номенклатурная группа</Наименование> 
  <ПометкаУдаления /> 
  <Родитель /> 
  <Код>00001</Код> 
  </НоменклатурныеГруппы>
- <Номенклатура>
  <Наименование>Оборудование (объекты основных средств)</Наименование> 
  <ПометкаУдаления /> 
  <Родитель /> 
  <Код>00009</Код> 
  <_ЭтоГруппа>true</_ЭтоГруппа> 
  </Номенклатура>
- <Номенклатура>
  <Наименование>Станок шлифовальный</Наименование> 
  <ПолнНаименование>Станок шлифовальный</ПолнНаименование> 
  <ПометкаУдаления /> 
  <Родитель /> 
  <СтавкаНДС>НДС18</СтавкаНДС> 
  <СтранаПроисхожения /> 
  <Услуга /> 
  <Код>00071</Код> 
  <_ЭтоГруппа /> 
  </Номенклатура>
  </Справочники>
  <Фильтр /> 
- <Объекты>
  <Фильтр /> 
  </Объекты>
  </MOD>


В браузере что показываает, без обрабогтки парсера
Код

<Документы><Справочники><КлассификаторЕдиницИзмерения><Наименование>шт<ПолнНаименование>Штука<ПометкаУдаления><Родитель><Код>796<НоменклатурныеГруппы><Наименование>Основная номенклатурная группа<ПометкаУдаления><Родитель><Код>00001 <Номенклатура><Наименование>Оборудование (объекты основных средств)<ПометкаУдаления><Родитель><Код>00009 <_ЭтоГруппа>true<Номенклатура><Наименование>Станок шлифовальный<ПолнНаименование>Станок шлифовальный<ПометкаУдаления><Родитель><СтавкаНДС>НДС18<СтранаПроисхожения><Услуга><Код>00071 <_ЭтоГруппа><Фильтр /><Объекты><Фильтр />

PM MAIL   Вверх
egao
Дата 6.12.2007, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 6.8.2007

Репутация: нет
Всего: нет



кто ж тебя надоумил в xml1.0 использовать кирилицу в тэгах?  smile 
PM MAIL   Вверх
BBALL
Дата 6.12.2007, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 3.12.2007

Репутация: нет
Всего: нет



Эмм...я с примера содрал...а что надо использовать?
PM MAIL   Вверх
egao
Дата 6.12.2007, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 6.8.2007

Репутация: нет
Всего: нет



латиницу, очевидно
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась.

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »


 




[ Время генерации скрипта: 0.1298 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.