xsltproc: xsl: версия: поддерживаются только функции 1.1 - PullRequest
0 голосов
/ 12 января 2019

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

thufir@dur:~/jaxb/ship$ 
thufir@dur:~/jaxb/ship$ ls
a.xslt  shiporder.xml
thufir@dur:~/jaxb/ship$ 
thufir@dur:~/jaxb/ship$ cat shiporder.xml 
<?xml version="1.0" encoding="UTF-8"?>

<shiporder orderid="889923"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="shiporder.xsd">
  <orderperson>John Smith</orderperson>
  <shipto>
    <name>Ola Nordmann</name>
    <address>Langgt 23</address>
    <city>4000 Stavanger</city>
    <country>Norway</country>
  </shipto>
  <item>
    <title>Empire Burlesque</title>
    <note>Special Edition</note>
    <quantity>1</quantity>
    <price>10.90</price>
  </item>
  <item>
    <title>Hide your heart</title>
    <quantity>1</quantity>
    <price>9.90</price>
  </item>
</shiporder> 


thufir@dur:~/jaxb/ship$ 
thufir@dur:~/jaxb/ship$ trang shiporder.xml shiporder.xsd
thufir@dur:~/jaxb/ship$ 
thufir@dur:~/jaxb/ship$ ls
a.xslt  shiporder.xml  shiporder.xsd  xsi.xsd
thufir@dur:~/jaxb/ship$ 
thufir@dur:~/jaxb/ship$ cat shiporder.xsd 
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <xs:import namespace="http://www.w3.org/2001/XMLSchema-instance" schemaLocation="xsi.xsd"/>
  <xs:element name="shiporder">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="orderperson"/>
        <xs:element ref="shipto"/>
        <xs:element maxOccurs="unbounded" ref="item"/>
      </xs:sequence>
      <xs:attribute name="orderid" use="required" type="xs:integer"/>
      <xs:attribute ref="xsi:noNamespaceSchemaLocation" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="orderperson" type="xs:string"/>
  <xs:element name="shipto">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="name"/>
        <xs:element ref="address"/>
        <xs:element ref="city"/>
        <xs:element ref="country"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="name" type="xs:string"/>
  <xs:element name="address" type="xs:string"/>
  <xs:element name="city" type="xs:string"/>
  <xs:element name="country" type="xs:NCName"/>
  <xs:element name="item">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="title"/>
        <xs:element minOccurs="0" ref="note"/>
        <xs:element ref="quantity"/>
        <xs:element ref="price"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="title" type="xs:string"/>
  <xs:element name="note" type="xs:string"/>
  <xs:element name="quantity" type="xs:integer"/>
  <xs:element name="price" type="xs:decimal"/>
</xs:schema>
thufir@dur:~/jaxb/ship$ 
thufir@dur:~/jaxb/ship$ cat xsi.xsd 
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <xs:import schemaLocation="shiporder.xsd"/>
  <xs:attribute name="noNamespaceSchemaLocation" type="xs:NCName"/>
</xs:schema>
thufir@dur:~/jaxb/ship$ 
thufir@dur:~/jaxb/ship$ cat a.xslt 
<?xml version="1.0" encoding="utf-8"?><xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>
 <xsl:template match="/">
  <xsl:copy-of select="unparsed-text(static-base-uri())"/>
 </xsl:template>
</xsl:stylesheet>
thufir@dur:~/jaxb/ship$ 
thufir@dur:~/jaxb/ship$ xsltproc a.xslt shiporder.xml > output.xml
compilation error: file a.xslt line 1 element stylesheet
xsl:version: only 1.1 features are supported
xmlXPathCompOpEval: function static-base-uri not found
XPath error : Unregistered function
xmlXPathCompiledEval: evaluation failed
no result for shiporder.xml
thufir@dur:~/jaxb/ship$ 

xml - это из w3school - откровенно говоря, просто пытаюсь сгенерировать какой-то вывод, используя xsltproc, что, я думаю, означает xslt версия 1.

1 Ответ

0 голосов
/ 12 января 2019

xsltproc использует процессор libxslt, который поддерживает только XSLT 1.0 или 1.1 (в некоторых конфигурациях).

Ваш XSLT содержит:

<xsl:copy-of select="unparsed-text(static-base-uri())"/>

static-base-uri() - это функция XPath 2.0, и ваш процессор не может с ней справиться - вот почему вы видите:

xmlXPathCompOpEval: function static-base-uri not found
XPath error : Unregistered function

Обратите внимание, что unparsed-text() - это функция XSLT 2.0, и вы также получите сообщение об ошибке, если процессор когда-либо зайдет так далеко.

просто ищет возможность генерировать какой-то вывод, используя xsltproc

Попробуйте преобразование личности для начинающих?

...