tutorials.de-Buchverschenkaktion 08/2010
+ Auf Thema antworten
  1. #1
    RE-DIK RE-DIK ist offline Mitglied RE-DIK hat eine blütenweiße Weste
    Registriert seit
    Jan 2010
    Beiträge
    16
    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
    Benutzerbild von Enumerator
    Enumerator Enumerator ist offline Mitglied Kamel Enumerator kann auf vieles stolz sein Enumerator kann auf vieles stolz sein Enumerator kann auf vieles stolz sein Enumerator kann auf vieles stolz sein Enumerator kann auf vieles stolz sein Enumerator kann auf vieles stolz sein
    Registriert seit
    Jan 2007
    Ort
    Schreibtisch
    Beiträge
    523
    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
    Zitat Zitat von Aba Assa
    "Zitate sind so etwas wie Outsourcing des Geistes."
    http://enumerator.meinbrutalo.de

  3. #3
    RE-DIK RE-DIK ist offline Mitglied RE-DIK hat eine blütenweiße Weste
    Registriert seit
    Jan 2010
    Beiträge
    16
    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
    Benutzerbild von Enumerator
    Enumerator Enumerator ist offline Mitglied Kamel Enumerator kann auf vieles stolz sein Enumerator kann auf vieles stolz sein Enumerator kann auf vieles stolz sein Enumerator kann auf vieles stolz sein Enumerator kann auf vieles stolz sein Enumerator kann auf vieles stolz sein
    Registriert seit
    Jan 2007
    Ort
    Schreibtisch
    Beiträge
    523
    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."
    http://enumerator.meinbrutalo.de

  5. #5
    RE-DIK RE-DIK ist offline Mitglied RE-DIK hat eine blütenweiße Weste
    Registriert seit
    Jan 2010
    Beiträge
    16
    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
    Benutzerbild von Enumerator
    Enumerator Enumerator ist offline Mitglied Kamel Enumerator kann auf vieles stolz sein Enumerator kann auf vieles stolz sein Enumerator kann auf vieles stolz sein Enumerator kann auf vieles stolz sein Enumerator kann auf vieles stolz sein Enumerator kann auf vieles stolz sein
    Registriert seit
    Jan 2007
    Ort
    Schreibtisch
    Beiträge
    523
    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."
    http://enumerator.meinbrutalo.de

Ähnliche Themen

  1. Attribute auslesen aus einem DefaultMutableTreeNode
    Von Nijura im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 02.01.09, 23:32
  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

Lesezeichen

Lesezeichen