Dies ist ein Beispiel-Snippet, das Format der Schema-Definition für Elemente zeigt:Wie extrahiere ich Elementnamen aus einem XML-Schema mit XSLT?
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.1">
<xs:include schemaLocation="enumerations_schema.xsd"/>
<xs:element name="xml_details" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="xml_element_1" minOccurs="0"/>
<xs:element name="xml_element_3" type="xs:string" minOccurs="0"/>
<xs:element name="xml_element_4" type="xs:decimal" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="data_details" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="data_element_1" minOccurs="0">
<xs:annotation>
<xs:documentation>Lorem ipsum</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="date" type="xs:date"/>
<xs:attribute name="as_of_date" type="xs:date"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="data_element_2" type="xs:decimal" minOccurs="0">
<xs:annotation>
<xs:documentation>Lorem ipsum</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="data_element_3" type="xs:decimal" minOccurs="0"/>
<xs:element name="data_element_4" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="Enumeration_1">
<xs:attribute name="type" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="data_element_5" type="xs:string" minOccurs="0"/>
<xs:element name="data_element_6" type="xs:decimal" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Wie Sie sehen können, gibt es zwei übergeordnete Elemente (xml_details und data_details) mit mehreren Kindern. Meine Frage ist, wie man mit XSLT nur die Child-Elementnamen (Blattknoten) holt. Die Ausgabe wird in etwa wie folgt aussehen:
xml_element_1
xml_element_3
xml_element_4
data_element_1
data_element_2
data_element_3
data_element_4
data_element_5
data_element_6
Mögen Sie dies bedeuten ?: \t xsl: template> –
Fenil
Zumindest mit XSLT 2.0 würde ich buchstäblich ' '. Aber offensichtlich gibt es viele Möglichkeiten, mit XSLT zu arbeiten, wenn Sie Templates verwenden wollen dann ' xsl: template> 'ist eins (das führende' // 'wird in einem Matchmuster nicht benötigt). –
Danke, dass XPath auf xpathfiddle.net funktioniert, aber wenn ich in XML Spy oder einem anderen XML-Umgebungseditor öffne, wird folgender Fehler ausgegeben: Fehler im XPath-Ausdruck Undefiniertes Namespacepräfix - 'xs' match = "xs: element [ nicht (.// xs: element)] " – Fenil