psomis Δημοσ. 6 Ιουνίου 2011 Δημοσ. 6 Ιουνίου 2011 Καλησπέρα , έχω απορία σχετικά με την παρακάτω ερώτηση. What is the output produced by running the XSLT transformation of TextBox 2 on the XML of TextBox 1? Briefly justify your answer. Δίνεται ο παρακάτω κώδικας σε μορφή xml. Τext box 1 > <?xml version="1.0" encoding="UTF-8"?> <bibliographic_records> <record> <leader>-----oam2 -------3 ----</leader> <controlfieldtag="001">1</controlfield> <controlfieldtag="005">19991121100244.0</controlfield> <datafieldtag="100" ind1=" " ind2=" "> <subfield code="a">19990518d1980 | | | y0grey50 ga</subfield> </datafield> <datafieldtag="101" ind1="| " ind2=" "> <subfield code="a">gre</subfield> </datafield> </record> <record> <leader>-----nam-------3 ----</leader> <controlfieldtag="001">2</controlfield> <controlfieldtag="005">20070614142530.0</controlfield> <datafieldtag="100" ind1=" " ind2=" "> <subfield code="a">19990518d1980 | | | y0grey50 ga</subfield> </datafield> <datafieldtag="101" ind1="| " ind2=" "> <subfield code="a">gre</subfield> </datafield> </record> </bibliographic_records> Text box 2 > <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:strip-space elements="controlfield datafield subfield" /> <xsl:outputmethod="xml" indent="yes" encoding="UTF-8" /> <xsl:templatematch="bibliographic_records"> <xsl:copy> <xsl:apply-templates select="record" /> </xsl:copy> </xsl:template> <xsl:templatematch="record"> <xsl:copy> <xsl:apply-templates select="leader" /> <xsl:apply-templates select="controlfield" /> <xsl:apply-templates select="datafield" /> </xsl:copy> </xsl:template> <xsl:templatematch="leader"> <xsl:copy><xsl:value-of select="."/></xsl:copy> </xsl:template> <xsl:templatematch="controlfield"> <xsl:call-template name="createElementFromTag"> <xsl:with-paramname="tag"> <xsl:value-of select="@tag" /> </xsl:with-param> </xsl:call-template> </xsl:template> <xsl:templatematch="datafield"> <xsl:call-template name="createElementFromTag"> <xsl:with-paramname="tag"> <xsl:value-of select="@tag" /> </xsl:with-param> </xsl:call-template> </xsl:template> <xsl:templatename="createElementFromTag"> <xsl:paramname="tag" /> <xsl:variablename="fieldName"> <xsl:text>item</xsl:text> <xsl:value-of select="$tag" /> </xsl:variable> <xsl:element name="{$fieldName}"> <xsl:apply-templates /> </xsl:element> </xsl:template> <xsl:templatematch="subfield"> <xsl:variablename="fieldName"> <xsl:text>item</xsl:text> <xsl:value-of select="../@tag" /> <xsl:value-of select="@code" /> </xsl:variable> <xsl:element name="{$fieldName}"> <xsl:value-of select="." /> </xsl:element> </xsl:template> </xsl:stylesheet> Ευχαριστώ!
psomis Δημοσ. 6 Ιουνίου 2011 Μέλος Δημοσ. 6 Ιουνίου 2011 Δεν μπορώ να καταλάβω τι θα βγάλει σαν output. θα βγάλει μορφοποιημενο το text box 1? Πως θα ήταν η απάντηση που πρέπει να δώσω?
Γηρυόνης Δημοσ. 6 Ιουνίου 2011 Δημοσ. 6 Ιουνίου 2011 Έτσι όπως το βλέπω δε θα βγάλει τίποτα, το XML δεν είναι έγκυρο.
psomis Δημοσ. 6 Ιουνίου 2011 Μέλος Δημοσ. 6 Ιουνίου 2011 Είναι ερώτηση εξεταστικής, απο τη στιγμή όμως πού λέει να δικαιολογήσω την απάντηση δέν μπορώ να γράψω ότι δεν θά τρεξει. Παρόλαυτα που ειναι το λάθος?
Γηρυόνης Δημοσ. 6 Ιουνίου 2011 Δημοσ. 6 Ιουνίου 2011 Αυτό > <controlfieldtag="001">1</controlfield> δεν είναι έγκυρο, δεν μπορείς να έχεις απευθείας = μετά το tag name. Κανονικά θα έπρεπε να είναι > <controlfield tag="001">1</controlfield>
defacer Δημοσ. 6 Ιουνίου 2011 Δημοσ. 6 Ιουνίου 2011 Δεν μπορώ να καταλάβω τι θα βγάλει σαν output. θα βγάλει μορφοποιημενο το text box 1? Πως θα ήταν η απάντηση που πρέπει να δώσω? Βασικά ξέρεις τι είναι XSLT και πώς δουλεύει;
psomis Δημοσ. 6 Ιουνίου 2011 Μέλος Δημοσ. 6 Ιουνίου 2011 Ναι το XSlt είναι μια γλωσσα η οποία μορφοποιεί ενα xml αρχείο. π.χ άπο xml to μετατρέπει σε xhtml k.t.l. ο παραπάνω κώδικας προφανώς μορφοποιεί το xml αφου περιέχει και templates. to θέμα είναι ποιά είναι η ακριβής απάντηση που πρέπει να δώθει γιατί έχω σκαλώσει!
Γηρυόνης Δημοσ. 6 Ιουνίου 2011 Δημοσ. 6 Ιουνίου 2011 Θεωρητικώς (αν δηλαδή το XML ήτανε έγκυρο) θα έπρεπε να αντικαταστήσει όλα τα elements που έχουνε tag attribute, με item + tag κωδικό, π.χ. το > <controlfield tag="001">1</controlfield> <controlfield tag="005">19991121100244.0</controlfield> θα έπρεπε να γίνει > <item001>1</item001> <item005>19991121100244.0</item005> κοκ. Πάνω κάτω αυτό είναι, θα πρέπει να το μελετήσω καλύτερα για να σου πω τι θα βγάλει. Γιατί δεν το τρέχεις να δεις τι βγάζει;
defacer Δημοσ. 6 Ιουνίου 2011 Δημοσ. 6 Ιουνίου 2011 http://lmgtfy.com/?q=xslt+online+tool Πάντως όπως τα δίνεις δεν πρόκειται να παίξει, γιατί έχεις λάθη και στο XSLΤ και στο XML (λείπουν κενά σε αρκετά σημεία ανάμεσα στο tag name και στο πρώτο attribute, όπως ήδη έχει επισημάνει και ο Γηρυόνης).
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.