![]() |
|
Модераторы: diadiavova |
![]()
|
|
| RockClimber |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: нет Всего: 15 |
Делаю преобразование xml с помощью XSLT, использую XMLSpy.
Исходный документ сохранен в кодировке Windows-1251, после преобразования получаются крякозябры, в заголовке - строчка <?xml version="1.0" encoding="UTF-8"?>... Я правильно понимаю, что XMLSpy русские кодировки не понимает и объяснять ему это бесполезно? И поможет ли преобразование исходного документа в кодировку utf-8? И если да, то как преобразовать? -------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
| RockClimber |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: нет Всего: 15 |
Проблема решена. Спасибо batigoal за ссылку на хороший ресурс.
Проблема решилась путем вставки строчки
-------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
| SRV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 19.8.2008 Репутация: нет Всего: нет |
Есть xml-файл с тегами на русском в кодировке utf-8. Пишу запрос на РНР:
/сотрудники/сотрудник/фамилия/text() выдает ошибку: Warning: DOMXPath::query() [function.DOMXPath-query]: Invalid expression Если теги на английском, работает. Почему не работает text()? |
|||
|
||||
| jsa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 704 Регистрация: 19.1.2006 Где: Новосибирск Репутация: 3 Всего: 20 |
вообще-то DOMXPath->query возвращает экземпляр DOMNodeList, а ни как не String -------------------- Все мы, на перине с песней, строим небо на земле © Ю. Шевчук |
|||
|
||||
| SRV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 19.8.2008 Репутация: нет Всего: нет |
$domxpath = new domXpath($doc);
$query = "/сотрудники/сотрудник/фамилия/text()"; $list = $domxpath->query($query); echo "Фамилии всех сотрудников: <br>"; foreach($list as $node) echo "$node->nodeValue <br>"; ошибка: Warning: DOMXPath::query() [function.DOMXPath-query]: Invalid expression $domxpath = new domXpath($doc); $query = "/сотрудники/сотрудник/фамилия"; //без text() $list = $domxpath->query($query); echo "Фамилии всех сотрудников: <br>"; foreach($list as $node) echo "$node->nodeValue <br>"; Работает. Добавлено через 11 минут и 22 секунды но в этом случае, не работали предикаты переименовал в xml корень с <сотрудники> на <personal>, всё нормально! $domxpath = new domXpath($doc); $query = "/personal/сотрудник/фамилия/text()"; $list = $domxpath->query($query); echo "Фамилии всех сотрудников: <br>"; foreach($list as $node) echo "$node->nodeValue <br>"; Предикаты тоже работают. Вот так. Почему не работало с "русским корнем" (все файлы в utf-8)? Заранее спасибо. |
|||
|
||||
| jsa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 704 Регистрация: 19.1.2006 Где: Новосибирск Репутация: 3 Всего: 20 |
xml в студию (который на русском конечно)
-------------------- Все мы, на перине с песней, строим небо на земле © Ю. Шевчук |
|||
|
||||
| SRV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 19.8.2008 Репутация: нет Всего: нет |
<?xml version='1.0'?>
<сотрудники> <сотрудник номер="1"> <фамилия>Андреев</фамилия> <имя>Роман</имя> <отчество>Петрович</отчество> <пол>М</пол> <год-рождения>1975</год-рождения> <семейное-положение>женат</семейное-положение> <дети> <фамилия>Андреев</фамилия> <имя>Иван</имя> <отчество>Романович</отчество> <пол>M</пол> <год-рождения>2000</год-рождения> <фамилия>Андреева</фамилия> <имя>Анна</имя> <отчество>Романовна</отчество> <пол>Ж</пол> <год-рождения>2003</год-рождения> </дети> <штатный>Да</штатный> <должность>Программист</должность> </сотрудник> <сотрудник номер="2"> <фамилия>Попов</фамилия> <имя>Дмитрий</имя> <отчество>Алексеевич</отчество> <пол>М</пол> <год-рождения>1970</год-рождения> <семейное-положение>женат</семейное-положение> <дети> <фамилия>Попов</фамилия> <имя>Андрей</имя> <отчество>Дмитриевич</отчество> <пол>М</пол> <год-рождения>1993</год-рождения> </дети> <штатный>Нет</штатный> <должность>Программист</должность> </сотрудник> <сотрудник номер="3"> <фамилия>Иванов</фамилия> <имя>Дмитрий</имя> <отчество>Сергеевич</отчество> <пол>М</пол> <год-рождения>1985</год-рождения> <семейное-положение>не женат</семейное-положение> <штатный>Нет</штатный> <должность>Программист</должность> </сотрудник> <сотрудник номер="4"> <фамилия>Сидорова</фамилия> <имя>Татьяна</имя> <отчество>Сергеевна</отчество> <пол>Ж</пол> <год-рождения>1980</год-рождения> <семейное-положение>замужем</семейное-положение> <дети> <фамилия>Сидорова</фамилия> <имя>Мария</имя> <отчество>Ивановна</отчество> <пол>Ж</пол> <год-рождения>2001</год-рождения> </дети> <штатный>Да</штатный> <должность>Дизайнер</должность> </сотрудник> <сотрудник номер="5"> <фамилия>Семенов</фамилия> <имя>Сергей</имя> <отчество>Иванович</отчество> <пол>М</пол> <год-рождения>1979</год-рождения> <семейное-положение>разведен</семейное-положение> <дети> <фамилия>Семенов</фамилия> <имя>Сергей</имя> <отчество>Сергеевич</отчество> <пол>М</пол> <год-рождения>1994</год-рождения> </дети> <штатный>Нет</штатный> <должность>Дизайнер</должность> </сотрудник> <сотрудник номер="6"> <фамилия>Морозова</фамилия> <имя>Инна</имя> <отчество>Сергеевна</отчество> <пол>Ж</пол> <год-рождения>1985</год-рождения> <семейное-положение>замужем</семейное-положение> <штатный>Да</штатный> <должность>Дизайнер</должность> </сотрудник> </сотрудники> |
|||
|
||||
| jsa |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 704 Регистрация: 19.1.2006 Где: Новосибирск Репутация: 3 Всего: 20 |
вывод
все работает, проверяй у себя кодировку -------------------- Все мы, на перине с песней, строим небо на земле © Ю. Шевчук |
||||
|
|||||
| SRV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 19.8.2008 Репутация: нет Всего: нет |
у меня так тоже работало.
попробуй такой запрос: $query = "/personal/сотрудник[пол = 'Ж']/фамилия/text()" Добавлено через 12 минут и 56 секунд или напиши другой, чтобы отобрать всех сотрудников девушек |
|||
|
||||
| jsa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 704 Регистрация: 19.1.2006 Где: Новосибирск Репутация: 3 Всего: 20 |
-------------------- Все мы, на перине с песней, строим небо на земле © Ю. Шевчук |
|||
|
||||
| SRV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 19.8.2008 Репутация: нет Всего: нет |
так:
$query = "//сотрудник/фамилия[following-sibling::пол[. = 'Ж']]"; работает, а так: $query = "/сотрудники/сотрудник/фамилия[following-sibling::пол[. = 'Ж']]"; нет Почему не знаешь? |
|||
|
||||
| jsa |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 704 Регистрация: 19.1.2006 Где: Новосибирск Репутация: 3 Всего: 20 |
нет Добавлено через 9 минут и 28 секунд
можно заменить на
-------------------- Все мы, на перине с песней, строим небо на земле © Ю. Шевчук |
||||
|
|||||
| SRV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 19.8.2008 Репутация: нет Всего: нет |
Спасибо за помощь.
|
|||
|
||||
![]()
|
| Правила форума "XML/XSLT" | |
|
|
Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась. Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение. Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел Желаем удачи в Вашем деле! Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | XML, XSL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |