Xquery не & ldquo; фильтр & rdquo; первый тег с атрибутом

Быстрый ответ: вы не можете этого сделать.


Вот почему

Существует окончательная база данных мировых часовых поясов, вы можете получить ее от IANA здесь .

Проблема состоит в том, что аббревиатуры 3 или 4 буквы имеют многозначную связь с часовыми поясами IANA. Например, "AMT" означает разные вещи, в зависимости от вашей культуры, в какой части мира вы находитесь и в контексте вашего приложения.

AMT "Armenia Time" Asia          UTC + 4 hours 
AMT "Amazon Time"  South America UTC - 4 hours 

Если вы действительно хотите Чтобы решить эту проблему, я предлагаю использовать Noda Time для представления ваших Instance s. Вам нужно будет написать код для преобразования сокращений в стандартный часовой пояс IANA.

Мы не можем сделать это для вас, это зависит от контекста вашего приложения.


Другим хорошим примером является "CST" .

CST "China Standard Time"   Asia            UTC + 8 hours 
CST "Central Standard Time" Central America UTC - 6 hours 
CST "Cuba Standard Time"    Caribbean       UTC - 5 hours 
CST "Central Standard Time" North America   UTC - 6 hours 

1
задан FranH 16 January 2019 в 16:15
поделиться

1 ответ

Вы столкнулись с общей проблемой: выбор XML, который находится в пространстве имен. Когда вы выбираете /findToFileResponse, вы выбираете элемент с именем findToFileResponse, но поскольку префикс пространства имен не указан, предполагается, что вы хотите выбирать элементы без пространства имен, что является общим.

Однако вы можете видеть, что ваш XML-документ находится в пространстве имен, потому что он использует атрибут пространства имен по умолчанию , что приводит к тому, что все его потомки включаются в это пространство имен (если не указано иное):

xmlns="xmlapi_1.0"

Чтобы выбрать элемент в этом пространстве имен, сначала нужно объявить его и присвоить префиксу в прологе XQuery:

declare namespace api = "xmlapi_1.0";

Сейчас Вы можете выбрать элементы в этом пространстве имен, используя префикс:

/api:findToFileResponse

Вы также можете выбрать элементы в любом пространстве имен, используя префикс подстановочного знака:

/*:findToFileResponse
0
ответ дан wst 16 January 2019 в 16:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: