Проблемы с использованием графического интерфейса BaseX

Я пытаюсь перемещаться по instance, используя XPath. Ниже я привожу отрывок из оригинала instance:

<?xml version="1.0" encoding="US-ASCII"?>
<xbrli:xbrl xmlns:ann="http://www.anninc.com/20140201" 
            xmlns:dei="http://xbrl.sec.gov/dei/2013-01-31" 
            xmlns:iso4217="http://www.xbrl.org/2003/iso4217" 
            xmlns:link="http://www.xbrl.org/2003/linkbase" 
            xmlns:us-gaap="http://fasb.org/us-gaap/2013-01-31" 
            xmlns:xbrldi="http://xbrl.org/2006/xbrldi" 
            xmlns:xbrli="http://www.xbrl.org/2003/instance" 
            xmlns:xlink="http://www.w3.org/1999/xlink" 
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <link:schemaRef xlink:href="ann-20140201.xsd" 
                  xlink:type="simple" />
  <xbrli:context id="FD2011Q4YTD">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK"
         >0000874214</xbrli:identifier>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2011-01-30</xbrli:startDate>
      <xbrli:endDate>2012-01-28</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="FD2011Q4YTD_ann_EarningsPerShareReconciliationAxis_ann_EarningsPerShareBasic.Member">
    <xbrli:entity>

Я знаю, что внутри root element есть namespace. Я использую GUI BaseX. Согласно предыдущей справке, мой root element равен {http://xbrl.org/2003/instance}xbrl!

Однако, когда я пытаюсь использовать выражение XPath следующим образом:

xquery doc("ann-20140201.xml")//{http://xbrl.org/2003/instance}xbrl

и я нажимаю Выполнить запрос, я получаю:

Error:
Stopped at C:/Users/Μαρίνος/Desktop/ann-20140201.xml, 1/6:
[XPST0003] Processing instruction has illegal name: 'xml'.

Что я делаю не так? Также мне посоветовали использовать:

declare namespace xbrli=http://xbrl.org/2003/instance;

Я ввожу эту команду из GUI и ввожу input command здесь (ввожу ли я здесь команду объявления?):

введите здесь описание изображения

НО я все еще получаю то же сообщение error, что и выше. Что мне делать с illegal name: xml?

EDIT_1

wst говорит использовать Q с нотацией Кларка:

xquery doc("ann-20140201.xml")//Q{http://xbrl.org/2003/instance}xbrl

--> Если я нажму запустить, он выполнится без ошибок. Однако вместо того, чтобы получать root element на панели Result в BaseX, как я получаю это с помощью этой команды:

XQUERY doc("ann-20140201.xml")//*

я ничего не получаю; Почему так? Также как мне объявить пространство имен?


person ExoticBirdsMerchant    schedule 11.06.2014    source источник
comment
Если вы собираетесь предоставить выдержку из документа, сделайте ее полной и пригодной для тестирования — то, что мы действительно можем запустить сами, и что вы протестировали, чтобы гарантировать наличие той же проблемы.   -  person Charles Duffy    schedule 11.06.2014
comment
Я разместил ссылку на исходный пример (sec. gov/Archives/edgar/data/1009672/000119312514065056/) в моем сообщении SO   -  person ExoticBirdsMerchant    schedule 11.06.2014
comment
В этом файле вообще нет инструкций по обработке. Мне трудно поверить, что это тот же файл, который выдает ошибку об обработке инструкций с недопустимыми именами.   -  person Charles Duffy    schedule 11.06.2014
comment
Разве это не инструкция по обработке: xquery doc("ann-20140201.xml")//Q{http://xbrl.org/2003/instance}xbrl? что я сделал не так?   -  person ExoticBirdsMerchant    schedule 11.06.2014
comment
Нет, инструкция обработки в XML — это узел, начинающийся с <?. См. en.wikipedia.org/wiki/Processing_Instruction. Например, <?xml-stylesheet type="text/css" value="css.xsl"/>   -  person Charles Duffy    schedule 11.06.2014
comment
Извините, сэр, но разве это не инструкция по обработке (<?xml version="1.0" encoding="US-ASCII"?>)? -- в первой строке.   -  person ExoticBirdsMerchant    schedule 11.06.2014
comment
<?xml — это особый случай, который должен быть только в самом, самом начале файла. Если у вас есть где-нибудь еще - даже один символ перед этой строкой - это будет причиной вашей ошибки.   -  person Charles Duffy    schedule 11.06.2014
comment
Что касается графического интерфейса, кстати, если вы хотите вводить объявления, используйте полное окно запроса, а не панель быстрого поиска.   -  person Charles Duffy    schedule 11.06.2014
comment
О, действительно, в ссылке нет <xml, однако, когда я загружаю ее и сохраняю как xml, у меня есть <xml в моей первой строке. Я открываю его с помощью Notepad++   -  person ExoticBirdsMerchant    schedule 11.06.2014
comment
Хм. US-ASCII — несколько неудачный выбор кодировки. К счастью, UTF-8 совместим с ним, поэтому вы сможете полностью удалить эту строку, вернуться к значениям по умолчанию и посмотреть, изменит ли это ситуацию. Если это так, вы можете рассмотреть возможность публикации в списке рассылки BaseX.   -  person Charles Duffy    schedule 11.06.2014
comment
Я полностью удаляю US-ASCII и получаю [FODC0002] "C:/Users/Μαρίνος/Desktop/ann-20140201.xml" (Line 1): A pseudo attribute name is expected. (не могли бы вы сказать мне, где находится полное окно запроса, которое я ищу, чтобы найти его ;-))   -  person ExoticBirdsMerchant    schedule 11.06.2014
comment
Моя первая строка сейчас: <?xml version="1.0">   -  person ExoticBirdsMerchant    schedule 11.06.2014
comment
Под полным удалением этой строки я имел в виду всю строку, а не только объявление кодировки.   -  person Charles Duffy    schedule 11.06.2014
comment
я полностью удалил строку, и я получаю: [XPST0003] Comparison is incomplete. когда я ввожу: declare namespace xbrli=http://xbrl.org/2003/instance;   -  person ExoticBirdsMerchant    schedule 11.06.2014
comment
Если это единственное то, что вы вводите, да, оно неполно. Поместите свой запрос в это же окно.   -  person Charles Duffy    schedule 11.06.2014
comment
Давайте продолжим обсуждение в чате.   -  person ExoticBirdsMerchant    schedule 11.06.2014
comment
Не могли бы вы сказать мне, где находится полное окно запроса? Я не могу найти его :P (извините)   -  person ExoticBirdsMerchant    schedule 11.06.2014


Ответы (3)


Введите следующее в окно редактора и нажмите «Выполнить»:

declare namespace xbrli="http://www.xbrl.org/2003/instance";

http:send-request(
  <http:request method='get'/>,
  'http://www.sec.gov/Archives/edgar/data/874214/000087421414000008/ann-20140201.xml'
)[2]/xbrli:xbrl

База данных может получить исходный документ через HTTP и без проблем запросить из него корневой элемент.

Более локально следующее работает отлично (после импорта документа в качестве базы данных):

declare namespace xbrli="http://www.xbrl.org/2003/instance";
doc("ann-20140201")/xbrli:xbrl

Я заметил, что в вашем объявлении пространства имен в вопросе нет вопросительных знаков - это важно.

У меня также нет проблем с получением результата запроса на основе QName:

doc("ann-20140201")/Q{http://www.xbrl.org/2003/instance}xbrl
person Charles Duffy    schedule 11.06.2014
comment
Вау, я думаю, это работает.... странно, что вы поместили первую команду (объявить...) в то место, где был xml - person ExoticBirdsMerchant; 11.06.2014
comment
Спасибо. Просто последняя морщинка, если можно. У меня сложилось впечатление (как у очень нового пользователя), что в окне редактора мы помещаем только запрашиваемый xml, а не команды... разве это использование редактора для размещения команд не создает двусмысленности? (просто спрашиваю) - person ExoticBirdsMerchant; 11.06.2014
comment
Нет, окно редактора — это не то место, куда вы помещаете запрашиваемый XML в обычных/типичных рабочих процессах. Как правило, этот контент должен храниться в базе данных (как и в случае команды создания базы данных). - person Charles Duffy; 11.06.2014
comment
Все это репетиторство было для меня тонной золота, спасибо! Бог благословил! - person ExoticBirdsMerchant; 11.06.2014

Я думаю, что для запроса с использованием нотации Кларка вам нужно добавить префикс Q:

xquery doc("ann-20140201.xml")//Q{http://xbrl.org/2003/instance}xbrl
person wst    schedule 11.06.2014

Процессор не должен воспринимать объявление XML (<?xml...?>) как инструкцию по обработке.

Убедитесь, что перед объявлением нет пробелов, включая разрывы строк. Это должно быть самое первое в файле.

person Daniel Haley    schedule 11.06.2014
comment
1. У меня здесь нет пробелов: declare namespace xbrli=http://xbrl.org/2003/instance; первый символ это буква d в ​​команде нет пробелов. - person ExoticBirdsMerchant; 11.06.2014
comment
2. В начале отрывка XML в первой строке есть: <?xml version="1.0" encoding="US-ASCII"?> - person ExoticBirdsMerchant; 11.06.2014
comment
@ExoticBirdsMerchant - я имел в виду № 2. Единственный раз, когда я когда-либо видел эту ошибку, это когда перед объявлением был пробел. Если у вас их нет, это должно быть что-то другое. Удачи! - person Daniel Haley; 11.06.2014
comment
О, вы имеете в виду отсутствие пробела перед объявлением xml в файле? Дай мне проверить. - person ExoticBirdsMerchant; 11.06.2014
comment
Нет, я проверил файл, перед xml declaration нет пробела. нюхать - person ExoticBirdsMerchant; 11.06.2014
comment
@ExoticBirdsMerchant - Извините... иногда это так просто. Я уверен, что кто-то сможет вам помочь. - person Daniel Haley; 11.06.2014
comment
Спасибо за участие - надеюсь, кто-нибудь поможет мне выбраться из хтиса - person ExoticBirdsMerchant; 11.06.2014