代码之家  ›  专栏  ›  技术社区  ›  Thufir

xsltproc:xsl:version:仅支持1.1功能

  •  0
  • Thufir  · 技术社区  · 5 年前

    我不想在这里做任何壮观的事情,只是想,真的,任何简单的事情 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 from xsltproc ,这意味着 我相信是第一版。

    1 回复  |  直到 5 年前
        1
  •  3
  •   michael.hor257k    5 年前

    xsltproc 使用 libxslt

    您的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()

    只是想使用 xsltproc

    试试 identity transform 首先?