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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XSL не тащит из XML значения 
:(
    Опции темы
mediate
Дата 24.8.2010, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем здравствуйте.
Я не профи в создании XSL и XSLT преобразователей, НО сделать мне поручено. есть исходный файл XML? вот кусок из него:
__________________________________________________________
<?xml version="1.0" encoding="windows-1251"?>
<xdms:communication xdms:version="1.0" xmlns:xdms="http://www.infpres.com/IEDMS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <xdms:header xdms:type="Документ">
    <xdms:source xdms:uid="343242342341342123">
      <xdms:organization>текст</xdms:organization>
    </xdms:source>
  </xdms:header> 
  <xdms:document xdms:uid="тут uid" xdms:id="1464">
    <xdms:kind xdms:id="1262720385110" xdms:retro="false" xdms:modified="2002-03-15T00:00:00">текст_2</xdms:kind>
и т.д.
_____________________________________________________________

Я в своем XSL пытаюсь получить значение текст_2 из тэга kind и присвоить атрибуту, но никак не выходит, вот что я пишу:
__________________________________________
<?xml version="1.0" encoding="utf-16" standalone="yes"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xdms="http://www.infpres.com/IEDMS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output method="xml"/>
<xsl:template match="/">
......
......
    <xsl:element name="dictionary">
        <xsl:attribute name="fieldType">4</xsl:attribute>
        <xsl:attribute name="dictionaryName"></xsl:attribute>        
        <xsl:attribute name="value">
            <xsl:value-of select="communication/document/kind"/>
        </xsl:attribute>
    </xsl:element>
......
......
______________________________________________


Вобщем value = "" в выходном XML, помогите люди добрые? чего не так пишу?
PM MAIL   Вверх
diadiavova
Дата 24.8.2010, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Не указал в XPath-выражениях пространства имен.
Код

<dictionary fieldType="4" dictionaryName="" value="{//xdms:communication/xdms:document/xdms:kind}" />



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
mediate
Дата 24.8.2010, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



diadiavova, не понял. Я XSL не так написал? или в путь до kind надо добавить xdms: ???
я добавил, все равно не получаю значения.

Может я не так понял smile
PM MAIL   Вверх
diadiavova
Дата 24.8.2010, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(mediate @  24.8.2010,  15:56 Найти цитируемый пост)
Я XSL не так написал?

Нормально, только длинно очень.
Цитата(mediate @  24.8.2010,  15:56 Найти цитируемый пост)
я добавил, все равно не получаю значения.

Что именно ты добавил?


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
mediate
Дата 24.8.2010, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



   вот это добавил - xdms: и еще пробовал со {}, ничего не меняется.

              <xsl:attribute name="value">
        <xsl:value-of select="//xdms:communication/xdms:document/xdms:kind"/>
    </xsl:attribute>
PM MAIL   Вверх
diadiavova
Дата 24.8.2010, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Вот, собственно, что получилось у меня

XML
Код

<?xml version="1.0" encoding="windows-1251"?>
<xdms:communication xdms:version="1.0" xmlns:xdms="http://www.infpres.com/IEDMS"
                                        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <xdms:header xdms:type="Документ">
        <xdms:source xdms:uid="343242342341342123">
            <xdms:organization>текст</xdms:organization>
        </xdms:source>
    </xdms:header>
    <xdms:document xdms:uid="тут uid" xdms:id="1464">
        <xdms:kind xdms:id="1262720385110"
                             xdms:retro="false"
                             xdms:modified="2002-03-15T00:00:00">текст_2</xdms:kind>
    </xdms:document>
</xdms:communication>



XSL
Код

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:xdms="http://www.infpres.com/IEDMS">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="/">
        <dictionary fieldType="4" dictionaryName="" value="{//xdms:communication/xdms:document/xdms:kind}" />
    </xsl:template>
</xsl:stylesheet>


Результат
Код

<?xml version="1.0" encoding="utf-8"?>
<dictionary fieldType="4" dictionaryName="" value="текст_2" xmlns:xdms="http://www.infpres.com/IEDMS" />


Добавлено через 2 минуты и 47 секунд
А если сделать так

XSL
Код

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:xdms="http://www.infpres.com/IEDMS" exclude-result-prefixes="xdms">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="/">
        <dictionary fieldType="4" dictionaryName="" value="{//xdms:communication/xdms:document/xdms:kind}" />
    </xsl:template>
</xsl:stylesheet>

То результат будет таким
Код

<?xml version="1.0" encoding="utf-8"?>
<dictionary fieldType="4" dictionaryName="" value="текст_2" />



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
mediate
Дата 24.8.2010, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



круто. а через value-of select нельзя делать? т.е. с моей конструкцией - как засунуть этот путь правильно?
PM MAIL   Вверх
diadiavova
Дата 24.8.2010, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Да точно так же как у тебя
Код

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:xdms="http://www.infpres.com/IEDMS" exclude-result-prefixes="xdms">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="/">
            <xsl:element name="dictionary">
                <xsl:attribute name="fieldType">4</xsl:attribute>
                <xsl:attribute name="dictionaryName"></xsl:attribute>
                <xsl:attribute name="value">
                    <xsl:value-of select="//xdms:communication/xdms:document/xdms:kind"/>
                </xsl:attribute>
            </xsl:element>
    </xsl:template>
</xsl:stylesheet>


Только зачем? smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
mediate
Дата 24.8.2010, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а у меня value при такой конструкции все равно пустое :( вот:

<?xml version="1.0" ?> 
- <interchangeData creationTime="" unitName="" territoryId="" organizationName="">
- <documentDescriptor docCode="" docName="" schemaId="" schemaName="" processCode="" processName="" categoryCode="" categoryName="" docID="" docCreationTime="" docCreator="" annotation="" docProcessor="">
  <versionDescriptor versionId="" versionCreationTime="" versionCreator="" termTime="" versionPath="" versionRoute="" phaseNo="" phaseName="" folderName="" state="входящая необработанная версия" parentVersionId="" fileExtension="" resolutions="" /> 
- <cardBody cardCode="" cardName="" cardComment="" fieldCaption="-" fieldCode="2">
  <dictionary fieldType="4" fieldCode="" fieldKey="" fieldCaption="ВИД ДОКУМЕНТА" dictionaryId="" dictionaryName="" value="" />

Добавлено через 46 секунд
Код

<?xml version="1.0" ?> 
- <interchangeData creationTime="" unitName="" territoryId="" organizationName="">
- <documentDescriptor docCode="" docName="" schemaId="" schemaName="" processCode="" processName="" categoryCode="" categoryName="" docID="" docCreationTime="" docCreator="" annotation="" docProcessor="">
  <versionDescriptor versionId="" versionCreationTime="" versionCreator="" termTime="" versionPath="" versionRoute="" phaseNo="" phaseName="" folderName="" state="входящая необработанная версия" parentVersionId="" fileExtension="" resolutions="" /> 
- <cardBody cardCode="" cardName="" cardComment="" fieldCaption="-" fieldCode="2">
  <dictionary fieldType="4" fieldCode="" fieldKey="" fieldCaption="ВИД ДОКУМЕНТА" dictionaryId="" dictionaryName="" value="" /> 


PM MAIL   Вверх
diadiavova
Дата 24.8.2010, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(mediate @  24.8.2010,  16:26 Найти цитируемый пост)
а у меня value при такой конструкции все равно пустое :( вот:

Хочешь сказать, что короткий вариант у тебя работает, а длинный при всех прочих равных - нет? smile Такого просто не может быть,- эти записи эквивалентны.

И, пожалуйста, пользуйся подсветкой кода и переносами где это возможно.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
mediate
Дата 24.8.2010, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



извиняюсь за длинные строчки, буду переносить!
я не проверял короткий вариант, ты написал, что у тебя сработало - я не стал проверять.

У нас все XSLT написаны "чудесным" длинным образом, и надо сохранить красоту первозданную - почему может не работать эта хрень с value-of ?
PM MAIL   Вверх
diadiavova
Дата 24.8.2010, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(mediate @  24.8.2010,  16:41 Найти цитируемый пост)
я не проверял короткий вариант, ты написал, что у тебя сработало - я не стал проверять.

У меня и длинный сработал.
Цитата(mediate @  24.8.2010,  16:41 Найти цитируемый пост)
 почему может не работать эта хрень с value-of ?

Скорей всего причина в чем-то другом, но, не видя всей картины, я тут ничего сказать не могу.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
mediate
Дата 24.8.2010, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



всё! чудес не бывает smile я разобрался, всё заработало (мне не тот экзешник подсунули, который может имитирновать проверку).
но Xpath конечно - зачетная подсказка, спасибо большое!


PM MAIL   Вверх
mediate
Дата 26.8.2010, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Еще вопросик появился, связан с выборкой из ряда повторяющихся элементов, для наглядности вот:

Код

<?xml version="1.0" encoding="windows-1251"?>
<xdms:communication xdms:version="1.0" xmlns:xdms="http://www.infpres.com/IEDMS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <xdms:header xdms:type="Документ">
    <xdms:source xdms:uid="6D8C1EF5-A5EA-4DD9-A97D-5EE80F0663B1">
      <xdms:organization>Аппарат</xdms:organization>
    </xdms:source>
  </xdms:header> 
  <xdms:document xdms:uid="2D238CE8-AFE62BFF3102" xdms:id="1464584872977">
    <xdms:kind xdms:id="1262720385110" xdms:retro="false" xdms:modified="2002-03-15T00:00:00">Резолюция</xdms:kind>
    <xdms:num>
      <xdms:number>СС-П16-216</xdms:number>
      <xdms:date>2009-10-20</xdms:date>
    </xdms:num>
    <xdms:signatories>
      <xdms:signatory>
        <xdms:person xdms:id="1425929145955" xdms:retro="false" xdms:modified="2008-05-13T10:25:36.807">Семенович</xdms:person>
        <xdms:department xdms:id="1206885812824" xdms:retro="false" xdms:modified="2008-06-03T15:56:48.903">СекретариатС.С. (П18)</xdms:department>
        <xdms:post xdms:id="1447403978937" xdms:retro="false" xdms:modified="2007-09-26T09:44:09.850">Заместитель </xdms:post>
        <xdms:signed>2009-10-01</xdms:signed>
      </xdms:signatory>
    </xdms:signatories>
    <xdms:addressees>
      <xdms:addressee>
        <xdms:organization xdms:id="1206885810986" xdms:retro="false" xdms:modified="2009-09-30T19:20:33.433">Аппарат</xdms:organization>
        <xdms:person xdms:id="1425929146821" xdms:retro="false" xdms:modified="2008-12-22T14:14:24.613">Владимирович</xdms:person>
        <xdms:department xdms:id="1206885812912" xdms:retro="false" xdms:modified="2008-12-17T15:38:53.993">Департамент</xdms:department>
        <xdms:post xdms:id="1447403978844" xdms:retro="false" xdms:modified="1900-01-01T00:00:00">начальник отдела</xdms:post>
      </xdms:addressee>
      <xdms:addressee>
        <xdms:region xdms:id="1468878815419" xdms:retro="false" xdms:modified="1900-01-01T00:00:00">г.Москва</xdms:region>
        <xdms:organization xdms:id="1206885811593" xdms:retro="false" xdms:modified="2005-07-27T15:58:35.280">Росфи</xdms:organization>
        <xdms:person xdms:id="1425929145655" xdms:retro="false" xdms:modified="2007-04-28T10:09:53.757">Рыжков</xdms:person>
      </xdms:addressee>
      <xdms:addressee>
        <xdms:region xdms:id="1468878815419" xdms:retro="false" xdms:modified="1900-01-01T00:00:00">г.Москва</xdms:region>
        <xdms:organization xdms:id="1206885811606" xdms:retro="false" xdms:modified="2007-09-28T10:47:52.857">Рособразование</xdms:organization>
      <xdms:person xdms:id="1425929145655" xdms:retro="false" xdms:modified="2007-04-28T10:09:53.757">Димон</xdms:person>
      </xdms:addressee>



Мне нужно найти определенную организацию и из неё вытащить значение person, т.е. организация Рособразование, згачит надо вытащить из person - Димон. 

Как это сделать? как попасть именно в правильный элемент addressee?
PM MAIL   Вверх
diadiavova
Дата 26.8.2010, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Код

xdms:addressees/xdms:addressee[./xdms:organization[text() = 'Рособразование']]/xdms:person
Так наверно, хотя условие text() = 'Рособразование' может сыграть злую шутку, если там будут лишние пробелы или что-то в этом роде, но речь ведь не об этом...


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

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

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

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

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


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

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


 




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


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

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