Heim > Backend-Entwicklung > XML/RSS-Tutorial > Detaillierte Einführung in Beispielcode, der XML, Schema und XSLT gleichzeitig verwendet

Detaillierte Einführung in Beispielcode, der XML, Schema und XSLT gleichzeitig verwendet

黄舟
Freigeben: 2017-03-28 16:44:17
Original
2090 Leute haben es durchsucht

Ich habe noch nie ein Schema verwendet. Dieses Mal hoffe ich, Namespace und Schema zu meiner xml-Datei hinzuzufügen und dann xslt Nach der Konvertierung in HTML hatte ich nicht damit gerechnet, dass es viel Aufwand erfordert. Jetzt zeichne ich die Ergebnisse der normalen Arbeit auf und hoffe, allen etwas zu helfen.

Werfen wir zunächst einen Blick auf meine XML-Datei. Sie dient dazu, das Menü der Webseite zu definieren.

<?xml version="1.0" encoding="GB2312"?>
<menu_items>
<menu_item href="index.html" image="images/A1.gif" name="首页"/>
<menu_item href="ep.html" image="images/A2.gif" name="新闻">
    <menu_item href="ep.html" image="images/A2.gif" name="国内新闻"/>
</menu_item>
</menu_items>
Nach dem Login kopieren

Es handelt sich um eine sehr einfache XML-Datei Verwenden Sie auf Umwegen die Funktion „Schema generieren“ von xmlspy, um die Schemadatei automatisch zu generieren, und führen Sie sie dann nach einigen geringfügigen Änderungen wie folgt aus:

<?xml version="1.0" encoding="GB2312"?>
<xs:schema xmlns="http://www.hz-sp.com/2005/XMLSchema-menu" xmlns:xs=" 
 targetNamespace="http://www.hz-sp.com/2005/XMLSchema-menu">
<xs:element name="menu_item">
  <xs:complexType>
  <xs:sequence>
   <xs:element ref="menu_item" minOccurs="0"/>
  </xs:sequence>
  <xs:attribute name="name" type="xs:string" use="required"/>
  <xs:attribute name="href" type="xs:anyURI" use="optional"/>
  <xs:attribute name="image" type="xs:anyURI" use="optional"/>
  </xs:complexType>
</xs:element>
<xs:element name="menu_items">
  <xs:complexType>
  <xs:sequence>
   <xs:element ref="menu_item" maxOccurs="unbounded"/>
  </xs:sequence>
  </xs:complexType>
</xs:element>
</xs:schema>
Nach dem Login kopieren

und verwenden Sie dann die Funktion „Schema zuweisen“. xmlspy, um dieses xsd in xml anzugeben. Der Stammknoten „menu_items“ in xml ist wie folgt verbunden:

<menu_items xmlns="http://www.hz-sp.com/2005/XMLSchema-menu" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.hz-sp.com/2005/XMLSchema-menu
menu.xsd">
Nach dem Login kopieren

Als nächstes erstellen Sie die xslt-Datei, die ebenfalls nur das richtige Ergebnis liefert:

<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet xpath-default-namespace="http://www.hz-sp.com/2005/XMLSchema-menu" version="2.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" 
 xmlns:fn="http://www.w3.org/2004/07/xpath-functions" xmlns:xdt="http://www.w3.org/2004/07/xpath-datatypes" 
 xmlns="http://www.w3.org/1999/xhtml">>
<xsl:output encoding="GB2312" indent="yes" method="html" version="4.0"/>
<xsl:template match="mm:menu_items" xmlns:mm="http://www.hz-sp.com/2005/XMLSchema-menu">
  <table width="900" border="0" cellspacing="0" cellpadding="0">
  <tr>
   <xsl:for-each select="mm:menu_item">
   <a href="{@href}">
    <img src="{@image}" width="113" height="57" border="0"/>
   </a>
   </xsl:for-each>
  </tr>
  </table>
</xsl:template>
</xsl:stylesheet>
Nach dem Login kopieren

Was ärgerlich ist, ist, dass

xpath-default-namespace="http://www.hz-sp.com/2005/XMLSchema-menu"
Nach dem Login kopieren

keine Auswirkung auf die Übereinstimmung von xsl:template hat. Es wird geschätzt, dass die Übereinstimmung nicht xpath ist. Aber dieses -Attribut hat auch keine Auswirkung auf das select in for-each, was seltsam ist, ich glaube, ich habe nicht verstanden, wie man dieses Attribut verwendet.

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in Beispielcode, der XML, Schema und XSLT gleichzeitig verwendet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage