Προς το περιεχόμενο

XSLT Απορία


psomis

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα , έχω απορία σχετικά με την παρακάτω ερώτηση.

 

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>

 

Ευχαριστώ!

Δημοσ.

Δεν μπορώ να καταλάβω τι θα βγάλει σαν output. θα βγάλει μορφοποιημενο το text box 1? Πως θα ήταν η απάντηση που πρέπει να δώσω?

Δημοσ.

Είναι ερώτηση εξεταστικής, απο τη στιγμή όμως πού λέει να δικαιολογήσω την απάντηση δέν μπορώ να γράψω ότι δεν θά τρεξει. Παρόλαυτα που ειναι το λάθος?

Δημοσ.

Αυτό

 

>
<controlfieldtag="001">1</controlfield>

 

δεν είναι έγκυρο, δεν μπορείς να έχεις απευθείας = μετά το tag name. Κανονικά θα έπρεπε να είναι

 

>
<controlfield tag="001">1</controlfield>

Δημοσ.

Δεν μπορώ να καταλάβω τι θα βγάλει σαν output. θα βγάλει μορφοποιημενο το text box 1? Πως θα ήταν η απάντηση που πρέπει να δώσω?

 

Βασικά ξέρεις τι είναι XSLT και πώς δουλεύει;

Δημοσ.

Ναι το XSlt είναι μια γλωσσα η οποία μορφοποιεί ενα xml αρχείο. π.χ άπο xml to μετατρέπει σε xhtml k.t.l. ο παραπάνω κώδικας προφανώς μορφοποιεί το xml αφου περιέχει και templates. to θέμα είναι ποιά είναι η ακριβής απάντηση που πρέπει να δώθει γιατί έχω σκαλώσει!

Δημοσ.

Θεωρητικώς (αν δηλαδή το XML ήτανε έγκυρο) θα έπρεπε να αντικαταστήσει όλα τα elements που έχουνε tag attribute, με item + tag κωδικό, π.χ. το

 

>
<controlfield tag="001">1</controlfield>
<controlfield tag="005">19991121100244.0</controlfield>

 

θα έπρεπε να γίνει

 

>
<item001>1</item001>
<item005>19991121100244.0</item005>

 

κοκ. Πάνω κάτω αυτό είναι, θα πρέπει να το μελετήσω καλύτερα για να σου πω τι θα βγάλει. Γιατί δεν το τρέχεις να δεις τι βγάζει;

Δημοσ.

http://lmgtfy.com/?q=xslt+online+tool

 

Πάντως όπως τα δίνεις δεν πρόκειται να παίξει, γιατί έχεις λάθη και στο XSLΤ και στο XML (λείπουν κενά σε αρκετά σημεία ανάμεσα στο tag name και στο πρώτο attribute, όπως ήδη έχει επισημάνει και ο Γηρυόνης).

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...