tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Enumerator
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
1131
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    RE-DIK RE-DIK ist offline Mitglied Bronze
    Registriert seit
    Jan 2010
    Beiträge
    30
    Hallo zusammen,

    ich würde gerne mache Inhalte meiner XSD lesen indem ich mit XSL die Inhalt in eine XML Transformiere.

    XSD

    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:cptype name="Gruppe">
    <xs:element ref="zg"/>
    <xs:attribute ref="change"/>
    </xs:cptype>
    </xs:schema>

    XSL

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes" encoding="UTF-8"/>
    <xsl:template match="/">
    <inhalt>
    <xsl:value-of select="schema/cptype/@name"/>
    <xsl:value-of select="schema/cptype/element/@ref"/>
    <xsl:value-of select="schema/cptype/attribute/@ref"/>
    </inhalt>
    </xsl:template>
    </xsl:stylesheet>

    Hoffentlich kann mir jemand helfen.
     

  2. #2
    Avatar von Enumerator
    Enumerator Enumerator ist offline Mitglied Kamel
    Registriert seit
    Jan 2007
    Ort
    Schreibtisch
    Beiträge
    525
    Blog-Einträge
    2
    Hi!

    Das was Du da geschrieben hast ist von einem (validen) XMLSchema weit entfernt...
    Wie dem auch sei, Du kannst mit Deinem Template die Werte nicht auslesen, weil die XPath-Statements nicht passen bzw. Du den Namensraum nicht berücksichtigst:
    Code XML:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    <xsl:stylesheet version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     <xsl:output method="xml" indent="yes" encoding="UTF-8"/>
     <xsl:template match="/">
      <inhalt>
       <xsl:value-of select="xsd:schema/xsd:cptype/@name"/>
       <xsl:text> </xsl:text> <!-- Leerzeichen sollen ganz nützlich sein... -->
       <xsl:value-of select="xsd:schema/xsd:cptype/xsd:element/@ref"/>
       <xsl:text> </xsl:text>
       <xsl:value-of select="xsd:schema/xsd:cptype/xsd:attribute/@ref"/>
      </inhalt>
     </xsl:template>
    </xsl:stylesheet>

    Gruß
    Enum
    RE-DIK bedankt sich. 
    Zitat Zitat von Aba Assa
    "Zitate sind so etwas wie Outsourcing des Geistes."
    just-lyrics.org :: my-lyrics.org

  3. #3
    RE-DIK RE-DIK ist offline Mitglied Bronze
    Registriert seit
    Jan 2010
    Beiträge
    30
    Danke für deine Hilfe

    Hab was gelernt : ) noch ein kleines Problem die Ausgabe die raus kommt sieht so aus.

    <inhalt xmlns:xsd="http://www.w3.org/2001/XMLSchema"> mein Inhalt </inhalt>

    wie bekomme ich dies raus?
     

  4. #4
    Avatar von Enumerator
    Enumerator Enumerator ist offline Mitglied Kamel
    Registriert seit
    Jan 2007
    Ort
    Schreibtisch
    Beiträge
    525
    Blog-Einträge
    2
    'n Abend!

    So einfach geht das nicht, das liegt an dem XSL-T Prozessor den Du benutzt: Der Einfachheit halber übernimmt er einfach alle definierten Namensräume ohne zu prüfen ob sie noch Verwendung finden.
    Allerdings hat XSL-T das exclude-result-prefixes Attribut, welches es erlaubt spezielle - oder einfach alle (#all) - Namensräume zu "unterschlagen":
    Code XML:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    <xsl:stylesheet version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     <xsl:output method="xml" indent="yes" encoding="UTF-8"/>
     <xsl:template match="/">
      <xsl:element name="inhalt" exclude-result-prefixes="#all"> 
       <xsl:value-of select="xsd:schema/xsd:cptype/@name"/>
       <xsl:text> </xsl:text> <!-- Leerzeichen sollen ganz nützlich sein... -->
       <xsl:value-of select="xsd:schema/xsd:cptype/xsd:element/@ref"/>
       <xsl:text> </xsl:text>
       <xsl:value-of select="xsd:schema/xsd:cptype/xsd:attribute/@ref"/>
      </xsl:element>
     </xsl:template>
    </xsl:stylesheet>

    Gruß
    Enum
     
    Zitat Zitat von Aba Assa
    "Zitate sind so etwas wie Outsourcing des Geistes."
    just-lyrics.org :: my-lyrics.org

  5. #5
    RE-DIK RE-DIK ist offline Mitglied Bronze
    Registriert seit
    Jan 2010
    Beiträge
    30
    Funktioniert nicht mein Tool will dies nicht ausführen.

    Kennst du ein gutes Tool das große Datenmengen verarbeiten kann und Kostenfrei ist?
     

  6. #6
    Avatar von Enumerator
    Enumerator Enumerator ist offline Mitglied Kamel
    Registriert seit
    Jan 2007
    Ort
    Schreibtisch
    Beiträge
    525
    Blog-Einträge
    2
    Hi!

    Der Klassiker ist wohl xsltproc vom GNOME Projekt, basiert auf libxslt und ist - soweit ich das beurteilen kann - der schnellste XSL-T Prozessor und auch derjenige, mit dem ich das Stylesheet oben getestet habe. Leider unterstützt xsltproc nur XSL-T in Version 1.0, allerdings hab' ich bisher Version 2 noch nie benötigt.
    Weitere Implementationen sind z.B. Xalan von der Apache Foundation und natürlich Saxon von Michael Kay, wobei letztere auch XSL-T 2.0 unterstützt und wohl die meisten zusätzlichen Features enthält. Leider ist Saxon nur teilweise OpenSource.
    Wikipedia und Google können Dir noch mehr nennen, die oben sind die einzigen mit denen ich bisher gearbeitet habe.

    Gruß
    Enum
     
    Zitat Zitat von Aba Assa
    "Zitate sind so etwas wie Outsourcing des Geistes."
    just-lyrics.org :: my-lyrics.org

Ähnliche Themen

  1. XML Schema aus .jar Datei lesen mit xml catalog
    Von J0hNnY im Forum XML Technologien
    Antworten: 0
    Letzter Beitrag: 12.02.10, 12:02
  2. Antworten: 0
    Letzter Beitrag: 12.07.06, 14:25
  3. Antworten: 1
    Letzter Beitrag: 03.02.06, 10:49
  4. parameterabhängige Attribute in XML-Schema
    Von elkassi im Forum XML Technologien
    Antworten: 3
    Letzter Beitrag: 14.01.05, 12:51
  5. Oracle - Tabelle von einem Schema in ein anderes Schema verschieben
    Von Plumpsi im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 15.09.04, 10:26