Импорт XML в Access с использованием преобразования XSL [dубликат]

Альтернативный метод PHP 5.2

$datetime = new DateTime($user_date); echo $datetime->format('Y-m-d H:i:s');

DateTime - это Y38k и дружественный по времени.

51
задан Larry 31 August 2009 в 17:47
поделиться

3 ответа

Вам нужно объявить пространство имен в XSLT и использовать его в выражениях XPath. Например ::!!4]

  & lt; xsl: stylesheet ... xmlns: my = "http://www.mysite.com" & gt;  & lt; xsl: template match = "/ my: MyRoot" & gt;  ... & lt; / xsl: template & gt;  & Lt; / XSL: стилей & GT;   

Обратите внимание, что вы должны предоставлять некоторый префикс, если вы хотите ссылаться на элементы из этого пространства имен в XPath. Хотя вы можете просто сделать xmlns = "..." без префикса, и он будет работать для литеральных элементов результата, он не будет работать для XPath - в XPath, неподписанное имя всегда считается быть в пространстве имен с пустым URI, независимо от любого xmlns = "..." в области.

56
ответ дан Pavel Minaev 16 August 2018 в 04:07
поделиться
  • 1
  • 2
    Пожалуйста, покажите свой XLST, который не работает. Трудно сказать ничего более определенного, не видя этого. То, что вы описываете, по-прежнему звучит так, будто вы пропустили квалификатор пространства имен somwhere . Например, имейте в виду, что вы должны повторять его для каждого шага XPath - т. Е. [D0] / my: MyRoot / my: foo / my: bar . – Pavel Minaev 28 August 2009 в 00:22
  • 3
    Действительно полезная заметка о необходимости префикса. Это заставило меня проверить спецификации. Похоже, XPath будет уважать пространство имен по умолчанию, если оно присутствует, но XSLT явно исключает пространство имен по умолчанию из области видимости w3.org/TR/xslt#section-Expressions – Dominic Cronin 1 September 2014 в 16:23
  • 4
    @PavelMinaev: Я использовал / my: MyRoot в моем xPath, так что совпадение с шаблоном выглядит так: & lt; xsl: template match = & quot; / my: MyRoot & quot; & gt; - так что такое MyRoot - это зарезервированное имя в XSLT? – Our Man in Bananas 2 September 2014 в 15:27
  • 5
    Нет, это просто имя элемента. Вы должны использовать все, что есть имя внешнего элемента для вашего XML. – Pavel Minaev 4 September 2014 в 18:09

Если вы используете XSLT 2.0, укажите xpath-default-namespace = "http://www.example.com" в разделе stylesheet .

23
ответ дан Daniel Haley 16 August 2018 в 04:07
поделиться

Если это была проблема с пространством имен, есть возможность попытаться изменить две вещи в файле xslt:

  • добавить определение «моего» пространства имен в xsl: tagheet tag
  • использовать префикс «my:» при вызове элементов при перемещении xml-файла.

result

  & lt; xsl: stylesheet version =  1.0 "xmlns: xsl =" http://www.w3.org/1999/XSL/Transform "xmlns: xs =" http://www.w3.org/2001/XMLSchema "xmlns: my =" http: /  /www.w3.org/2001/XMLSchema">  & lt; xsl: template match = "/" & gt;  & lt; soap: Envelope xsl: version = "1.0" xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns: xsd = "http://www.w3.org/2001/  XMLSchema "xmlns: soap =" http://schemas.xmlsoap.org/soap/envelope/ "& gt;  & Lt; мыло: Тело & GT;  & lt; NewRoot xmlns = "http://wherever.com" & gt;  & Lt; NewChild & GT;  & Lt; ChildID & GT; ABCD & л; / ChildID & GT;  & Lt; ChildData & GT;  & lt; xsl: значение - select = "/ my: MyRoot / my: MyChild1 / my: MyData" / & gt;  & Lt; / ChildData & GT;  & Lt; / NewChild & GT;  & Lt; / NewRoot & GT;  & Lt; / мыло: Тело & GT;  & Lt; / мыло: Конверт & GT;  & Lt; / XSL: шаблон & GT;  & Lt; / XSL: стилей & GT;   
3
ответ дан potame 16 August 2018 в 04:07
поделиться
Другие вопросы по тегам:

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