Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

XSLT Problem. Mein Code funktioniert nicht :-( bin total verzeifelt. Hilfeee

Empfohlene Antworten

Veröffentlicht

Hallo zusammen,

ich habe ein riesiges Problem, an dem ich verzweifle. Ich arbeite an einer XSLT-Transformation, die in X3D ausgeben soll,

aber irgendwo befindet sich ein Fehler in der Transformation. Kann ggf. jemand den Fehler erkennen? Für Eure Hilfe bin ich

sehr dankbar, ich habe wirklich schon alles probiert. Hier der XSLT-CODE:

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  

<xsl:output 

	media-type="model/x3d+xml" 

	doctype-system="http://www.web3d.org/specifications/x3d-3.2.dtd" 

	method="xml" 

	encoding="UTF-8" 

	indent="yes" 

	omit-xml-declaration="yes" /> 


<xsl:template match="/">

  <X3D profile="Immersive" version="3.0">

    <Scene>

    <Transform>

    <PointLight on="true"  location="-0.228412 0.514089 0" />

    	<xsl:apply-templates />

  </Transform>

</Scene>

</X3D>

</xsl:template>


<xsl:template match="kopf">

<xsl:for-each select="kopf">

<Shape>

<Appearance>

 <Material

  ambientIntensity="0.2"

  diffuseColor='0 0 0'

  emissiveColor='0 0 0'

  shininess="1.000000"

  specularColor='0.2 0.2 0.2'

  transparency="0.000000"

/>

</Appearance>

<IndexedFaceSet

  solid="true"

  creaseAngle="1.57"

coordIndex="

0 12 1 -1

 0 1 2 -1

 0 2 3 -1

 0 3 4 -1

 0 4 5 -1

 0 5 6 -1

 0 6 7 -1

 0 7 8 -1

 0 8 9 -1

 0 9 10 -1

 0 10 11 -1

 0 11 12 -1

.....

</IndexedFaceSet>

</Shape>

</xsl:for-each>

</xsl:template>

<xsl:template match="beinrechts">

<xsl:for-each select="beinrechts">

<Shape>

<Appearance>

 <Material

  ambientIntensity="0.2"

  diffuseColor='1 1 1'

  emissiveColor='0 0 0'

  shininess="1.000000"

  specularColor='0.2 0.2 0.2'

  transparency="0.000000"

/>

</Appearance>

<IndexedFaceSet

  solid="true"

  creaseAngle="1.57"

coordIndex="

0 2 13 -1

 0 3 2 -1

 0 4 3 -1

 0 5 4 -1

 0 6 5 -1

 0 7 6 -1

 0 8 7 -1

 0 9 8 -1

 0 10 9 -1

 0 11 10 -1

 0 12 11 -1

 0 13 12 -1

 1 25 14 -1

 1 14 15 -1

 1 15 16 -1

 1 16 17 -1

 1 17 18 -1

 1 18 19 -1

 1 19 20 -1

 1 20 21 -1

 1 21 22 -1

 1 22 23 -1

 1 23 24 -1

 1 24 25 -1

 25 13 2 14 -1

 14 2 3 15 -1

 15 3 4 16 -1

 16 4 5 17 -1

 17 5 6 18 -1

 18 6 7 19 -1

 19 7 8 20 -1

 20 8 9 21 -1

 21 9 10 22 -1

 22 10 11 23 -1

 23 11 12 24 -1

 24 12 13 25 -1

"

>

<Coordinate

  point="

0.169497 -1.49766 0.398629

0.0869187 -0.237779 0.619769

0.191635 -1.88129 0.541576

0.300922 -1.79619 0.538768

0.374993 -1.6311 0.49841

0.394001 -1.43025 0.431315

0.352854 -1.24746 0.355462

0.262577 -1.13171 0.291176

0.147358 -1.11401 0.255682

0.0380721 -1.19912 0.25849

-0.035999 -1.36421 0.298848

-0.0550078 -1.56506 0.365943

-0.0138606 -1.74785 0.441796

0.0764171 -1.8636 0.506082

0.109057 -0.621419 0.762716

0.218344 -0.536318 0.759908

0.292415 -0.371223 0.71955

0.311423 -0.170373 0.652455

0.270276 0.0124173 0.576603

0.179999 0.128166 0.512317

0.0647803 0.145862 0.476822

-0.0445059 0.0607598 0.47963

-0.118577 -0.104334 0.519989

-0.137586 -0.305185 0.587083

-0.0964386 -0.487974 0.662936

-0.00616094 -0.603724 0.727222

" />

</IndexedFaceSet>

</Shape>

</xsl:for-each>

</xsl:template>

<xsl:template match="schwanzfeder">

<xsl:for-each select="schwanzfeder">

<Shape>

<Appearance>

 <Material

  ambientIntensity="0.2"

  diffuseColor='1 1 1'

  emissiveColor='0 0 0'

  shininess="1.000000"

  specularColor='0.2 0.2 0.2'

  transparency="0.000000"

/>

</Appearance>

<IndexedFaceSet

  solid="false"

  creaseAngle="1.57"

coordIndex="

0 1 2 3 4 5 6 7 8 9 10 11 -1

"

>

<Coordinate

  point="

-1.22287 0 0.869439

-2.44296 0 -0.898803

-2.37223 0 -0.279918

-2.72588 0 0.14446

-2.35454 0 0.58652

-2.74356 0 0.922486

-2.40759 0 1.34686

-3.00879 0 1.73588

-2.53137 0 2.10721

-2.6021 0 2.67305

-2.12467 0 2.72609

-1.22287 0 1.85965

" />

</IndexedFaceSet>

</Shape>

</xsl:for-each>

</xsl:template>

</xsl:stylesheet>

Und der äußert sich wie?

Mehr als "alles" können wir auch nicht. :rolleyes:

Hallo Klotzkopp, danke für Deine schnelle Reaktion auf mein Problem. Ja ich hätte wirklich schreiben sollen, wie sich der Fehler genau darstellt, sorry deswegen.

Also das Problem ist, dass die Transformation das Objekt eigentlich in X3D ausgeben soll, genau das passiert aber nicht, der Browser bleibt schwarz.

--> die X3D-Datei alleine (wird korrekt dargestellt)

die xml scheint

--> valide

<?xml version="1.0" encoding="UTF-8" standalone="no" ?> 

<?xml-stylesheet href="rabe.xsl" type="text/xsl" ?>

<!DOCTYPE rabe SYSTEM "rabe.dtd">


<rabe>

<kopf>

	<auge1 />

		<auge2 />

	</kopf>


	<koerper>

  <fluegel1 />

  <fluegel2 />


  <beinlinks/>

  <beinrechts/>

  <schwanzfeder />

</koerper>

</rabe>
Die DTD ist auch ok:
<!ELEMENT kopf (auge1, auge2)>

	<!ELEMENT auge1 (#PCDATA)>

	<!ELEMENT auge2 (#PCDATA)>


<!ELEMENT koerper (fluegel1, fluegel2, beinlinks, beinrechts, schwanzfeder)>

<!ELEMENT fluegel1 (#PCDATA)>

<!ELEMENT fluegel2 (#PCDATA)>

<!ELEMENT beinlinks (#PCDATA)>

<!ELEMENT beinrechts (#PCDATA)>

<!ELEMENT schwanzfeder (#PCDATA)>

Demnach muss sich der Fehler voraussichtlich in der XSLT Datei befinden.

Lieben Gruß

Sandy ;)

Hallo Klotzkopp,

sorry das ich mich jetzt erst wieder melde. Also Zu Deiner Nachfrage wegen dem Vorgehen, ich habe die X3D Datei separat gestartet, um zu sehen, ob sich ein Fehler im X3Dcode befindet, sie wird alklerdings korrekt dargestellt, ansonsten habe ich die XSLT Datei gestartet, die ja eigentlich dann dasselbe Ergebnis ausgeben sollte, sofern alle beteiligten Ressourcen valide sind, also die DTD,XML und die XSLT, aber leider führt die XSLT Datei nicht zur Ausgabe der X3D-Datei und da die XML und die DTD valide zu sein scheinen, gehe ich stark von einem Fehler im XSLT Code aus.

Danke nochmal für Deine Mühe

Lieben Gruß

:)

Sandy

Hallo Klotzkopp,

sorry das ich mich jetzt erst wieder melde. Also Zu Deiner Nachfrage wegen dem Vorgehen, ich habe die X3D Datei separat gestartet, um zu sehen, ob sich ein Fehler im X3Dcode befindet, sie wird alklerdings korrekt dargestellt,

Die X3D-Datei, die du mit dieser XSLT erzeugt hast? Oder woher kommt diese Datei? Und "gestartet" heißt was?

ansonsten habe ich die XSLT Datei gestartet,
Auch hier: Was meinst du mit "gestartet"?

Hallo Klotzkopp,

also die X3D Datei habe ich separat erstellt und für sich gestartet, bzw. in meinem Browser mit dem entsprechenden X3D-Plugin betrachtet, um zu prüfen ob sie soweit in Ordnung ist, danach habe ich mithilfe von XSLT eine Transformation kodiert, in der ich die X3D-Datei stückweise 1:1 auf der Basis der XML-Datei erzeuge, also Kopf,Auge1 und 2 usw. und eigentlich sollte ja dann am Schluß dieselbe X3D-Datei erscheinen und sich betrachten lassen, aber genau das passiert nicht.

Ich habe zum "starten" der XSLT DATEI einfach alle Dateien, also XML,DTD,XSLT hochgeladen im selben Verzeichnis und dann die XSL - Datei aufgerufen, leider ohne Ergebnis.

Sorry das ich mich teilweise etwas ungeschickt ausdrücke, diese Materie macht mir echt zu schaffen :upps

Lieben Gruß

Sandy

also die X3D Datei habe ich separat erstellt
Und wie hast du sie erstellt?

Ich habe zum "starten" der XSLT DATEI einfach alle Dateien, also XML,DTD,XSLT hochgeladen im selben Verzeichnis und dann die XSL - Datei aufgerufen, leider ohne Ergebnis.

Du scheinst zu erwarten, dass beim Aufruf der XSLT-Datei entweder der Webserver oder der Browser "weiß", dass er genau diese XML-Datei als Input benutzen soll, die gerade zufällig im selben Verzeichnis liegt. Ich glaube nicht, dass das klappt.

Aber ich verschiebe den Thread besser zu den Webdesignern. Ich habe sowieso nicht verstanden, was das bei C++ soll ;)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.