Τι είναι ένα αρχείο XSL-FO;
Το XSL-FO (XSL Formatting Objects) είναι μια ισχυρή γλώσσα φύλλου στυλ για τη μορφοποίηση εγγράφων XML. Η σημασιολογία της οριοθετημένης μορφής χαρτιού και εκτύπωσης εκφράζεται με XSL-FO όταν οι διαστάσεις είναι σταθερές. Σε αντίθεση με την HTML, η οποία αντιπροσωπεύει τη σημασιολογία της απεριόριστης μορφής ενός παραθύρου του προγράμματος περιήγησης με μεταβλητές διαστάσεις. Τα έγγραφα XML που έχουν μορφοποιηθεί από XSL-FO χρησιμοποιούνται κυρίως για τη δημιουργία αρχείων PDF. Το XSL (Extensible Stylesheet Language) είναι ένα σύνολο τεχνολογιών W3C με πλήρεις δυνατότητες που προορίζονται για τη μορφοποίηση και την ανταλλαγή εγγράφων XML και τμήματος XSL-FO αυτής της γλώσσας. Το XSLT και το XPath είναι επίσης άλλα μέρη του XSL.
Προτείνεται τα έγγραφα XML να μετατραπούν πρώτα σε XSL-FO, το PDF είναι ένα παράδειγμα αυτού του κριτηρίου. Σε PDF, τα αποτελέσματα αποδίδονται χρησιμοποιώντας XSLTfirst, και μετά XSL-FO μορφοποιητή. Με αυτόν τον τρόπο, τα έγγραφα XML μπορούν να μορφοποιηθούν τυχαία. Αν και το XSL-FO εκμεταλλεύεται το πλεονέκτημα της χρήσης ιδιοτήτων Cascading Style Sheet (CSS) και τις επεκτείνει όπου είναι απαραίτητο για την πραγματική μορφή, φιλοξενεί την παροχή προτύπων σελίδας που ονομάζονται masters σελίδας στην ορολογία του XSL-FO. Το XSL-FO παρέχει επίσης μορφοποίηση για αρκετά εξελιγμένα έγγραφα και υποστηρίζει τη δημιουργία ευρετηρίου.
Ιστορία και βασικές έννοιες
Τον Ιανουάριο του 2012 το προσχέδιο εργασίας του XSL-FO ενημερώθηκε τελευταία φορά και τον Νοέμβριο του 2013, η Ομάδα Εργασίας του είχε κλείσει. Ένα φύλλο στυλ XSL καθορίζει την παρουσίαση μιας κλάσης εγγράφων XML, περιγράφοντας πώς μια παρουσία της κλάσης μετατρέπεται σε έγγραφο XML που χρησιμοποιεί το λεξιλόγιο μορφοποίησης. Η XSL-FO είναι μια ενσωματωμένη γλώσσα παρουσίασης και δεν έχει σημασιολογικές σημάνσεις που χρησιμοποιούνται σε HTML. Επιπλέον, αυτή η γλώσσα αποθηκεύει όλα τα δεδομένα του εγγράφου μέσα της, σε αντίθεση με το CSS που αλλάζει τις προεπιλεγμένες ρυθμίσεις ενός εξωτερικού εγγράφου HTML ή XML.
Τα γενικά κριτήρια χρήσης XSL-FO είναι ότι ο χρήστης γράφει ένα έγγραφο σε γλώσσα XML αντί να γράφει σε FO. Μετά από αυτό, εμφανίζεται ένας μετασχηματισμός XSLT. Αυτός ο μετασχηματισμός XSLT είναι υπεύθυνος για τη μετατροπή της XML σε XSL-FO. Μόλις δημιουργηθεί το έγγραφο XSL-FO, στη συνέχεια παραδίδεται σε μια εφαρμογή που ονομάζεται επεξεργαστής FO. Οι επεξεργαστές FO είναι υπεύθυνοι για τη μετατροπή αυτού του εγγράφου σε αναγνώσιμο καθώς και σε εκτυπώσιμο έγγραφο. Τα αρχεία PDF ή PS είναι παραδείγματα της πιο κοινής εξόδου του XSL-FO. Αλλά αυτό δεν σημαίνει ότι ο επεξεργαστής FO μπορεί να παράγει μόνο αυτούς τους δύο τύπους μορφής ως έξοδο. Ορισμένοι επεξεργαστές FO μπορούν να εξάγουν τα αρχεία RTF ή ακόμη και ένα παράθυρο μπορεί να εμφανιστεί στο γραφικό περιβάλλον χρήστη, αυτό το παράθυρο εμφανίζει τη σειρά της σελίδας και τα περιεχόμενά τους.
Ένα έγγραφο XSL-FO είναι διαφορετικό από ένα PDF ή ένα PS υπό την έννοια, δεν καθορίζει τελικά τη διάταξη κειμένου σε διαφορετικές σελίδες. Ίσως, διαμορφώνει το στυλ των σελίδων και καθορίζει τα σημεία εμφάνισης των περιεχομένων. Επιπλέον, ένας επεξεργαστής FO οργανώνει το κείμενο εντός των ορίων που καθορίζονται από το έγγραφο FO. Αυτή η προδιαγραφή επιτρέπει ακόμη και σε διαφορετικούς επεξεργαστές FO να συμπεριφέρονται ανάλογα με τις σελίδες που δημιουργούνται από το αποτέλεσμα. Ένα παράδειγμα τέτοιας συμπεριφοράς είναι ο συλλαβισμός, λίγοι επεξεργαστές FO μπορούν να πληκτρολογήσουν λέξεις για να εξοικονομήσουν χώρο όταν σπάσει μια γραμμή, ενώ ορισμένοι επεξεργαστές δεν επιλέγουν αυτήν την επιλογή. Εξαρτάται από τους επεξεργαστές να επιλέξουν διαφορετικούς αλγόριθμους συλλαβισμού που ταιριάζουν με τις απαιτήσεις τους. Αυτοί οι αλγόριθμοι συλλαβισμού μπορεί να είναι πολύ απλοί ή ίσως πιο περίπλοκοι. Σε ορισμένες περιπτώσεις, οι προδιαγραφές XSL-FO επιβάλλουν ρητά τους επεξεργαστές FO, κάποιου βαθμού επιλογής στο πλαίσιο της διάταξης.
Αυτή η διακύμανση μεταξύ των επεξεργαστών FO παράγει διαφορετικά αποτελέσματα, για τα οποία οι επεξεργαστές συχνά παραμένουν αδιάφοροι. Επειδή η γενική εστίαση του XSL-FO είναι στα παραγόμενα σελιδοποιημένα/εκτυπωμένα έγγραφα. Τα ίδια τα έγγραφα XSL-FO λειτουργούν συνήθως ως ενδιάμεσοι, η κύρια λειτουργία τους είναι να δημιουργούν είτε αρχεία PDF είτε ένα έγγραφο που μπορεί να εκτυπωθεί ως έξοδος που θα διανεμηθεί. Σε HTML/CSS ή XSL-FO, η διανομή του PDF ως τελικό αποτέλεσμα αντί για την εισαγωγή της γλώσσας μορφοποίησης υποδηλώνει ότι οι δέκτες παραμένουν ανεπηρέαστοι από την προκύπτουσα ευελιξία που παράγεται λόγω διαφορών μεταξύ των διερμηνέων της γλώσσας μορφοποίησης. Από την άλλη πλευρά, είναι προφανές ότι δεν υπάρχει εύκολος τρόπος, ότι ένα έγγραφο μπορεί να ικανοποιήσει τις διαφορετικές ανάγκες των παραληπτών, π.χ. μεταβλητό μέγεθος σελίδας ή επιθυμητό μέγεθος γραμματοσειράς ή προσαρμογή για σελίδα ή εκτύπωση.
Μορφή αρχείου XSLFO
Τα έγγραφα SL-FO είναι βασικά έγγραφα XML, αλλά δεν ακολουθούν κανένα σχήμα. Στη θέση του, τα έγγραφα SL-FO ακολουθούν τη σύνταξη που ορίζεται στις προδιαγραφές της γλώσσας τους. Υπάρχουν δύο ενότητες που απαιτούνται σε κάθε έγγραφο XSL-FO:
- Μια ενότητα που καθορίζει μια λίστα διατάξεων σελίδας με ετικέτα.
- Ένα τμήμα με όλες τις λεπτομέρειες των δεδομένων του εγγράφου, με σήμανση, που καθορίζει την εμφάνιση των περιεχομένων σε διαφορετικές σελίδες μέσω διαφόρων διατάξεων σελίδας.
Οι ιδιότητες της σελίδας αναφέρονται στις διατάξεις σελίδας, οι οποίες μπορούν να ορίσουν την οργάνωση για το κείμενο, ώστε να συμμορφώνονται με τις συμβάσεις για τη συγκεκριμένη γλώσσα. Επιπλέον, το μέγεθος της σελίδας, τα περιθώρια και οι ακολουθίες σελίδων (που επιβάλλουν διαφορετικές ιδιότητες για τις μονές και ζυγές σελίδες) ορίζονται επίσης από τις διατάξεις σελίδας.
Το τμήμα δεδομένων του εγγράφου χωρίζεται σε μια σειρά ροών, όπου κάθε ροή συνδέεται με μια διάταξη σελίδας. Οι ροές περικλείουν μια λίστα μπλοκ σε αυτές. Αυτή η λίστα μπλοκ μπορεί να περιέχει χαρακτηριστικά ενσωματωμένης σήμανσης ή μια λίστα δεδομένων κειμένου ή ίσως και τα δύο ταυτόχρονα. Τα περιθώρια του εγγράφου ενδέχεται επίσης να εμφανίζουν τους αριθμούς σελίδων ή τις επικεφαλίδες των κεφαλαίων. Η λειτουργικότητα τόσο των μπλοκ όσο και των ενσωματωμένων στοιχείων παραμένει η ίδια όπως στο CSS, ωστόσο ορισμένοι κανόνες συμπλήρωσης και περιθωρίου διαφέρουν μεταξύ FO και CSS.
Η κατεύθυνση προσανατολισμού της σελίδας καθορίζεται εξ ολοκλήρου για την επέκταση μπλοκ και ενσωματωμένων γραμμών, κάνοντας έτσι τα έγγραφα FO να εκτελούνται σε διαφορετικές γλώσσες από τα αγγλικά. Η γλώσσα της προδιαγραφής FO χρησιμοποιεί τις λέξεις αρχή και τέλος αντί αριστερά και δεξιά για την περιγραφή των οδηγιών. Οι βασικοί κανόνες σήμανσης περιεχομένου και διαδοχής περιεχομένου του XSL-FO προέρχονται από το CSS. Η γλώσσα του XSL-FO συμφωνεί με τις ακόλουθες προδιαγραφές.
Πολλαπλές στήλες
Μια σελίδα μπορεί να έχει πολλές στήλες και μπλοκ και μπορεί να επεκταθεί από τη μια στήλη στην άλλη από προεπιλογή. Επιτρέπεται σε πολλές σελίδες να έχουν διαφορετικά πλάτη και αριθμούς στηλών. Όλα τα χαρακτηριστικά FO ακολουθούν τα όρια μιας σελίδας πολλών στηλών.
Λίστες
Μια λίστα XSL-FO δημιουργείται από δύο σετ μπλοκ που είναι διατεταγμένα μάγουλο προς ρολό. Εννοιολογικά, σε μια λίστα, ένα μπλοκ στα αριστερά υποδεικνύει έναν αριθμό, μια κουκκίδα ή μια συμβολοσειρά κειμένου, ενώ το μπλοκ της δεξιάς πλευράς μπορεί να λειτουργεί όπως αναμενόταν. Η αρίθμηση των λιστών XSL-FO γίνεται συνήθως από το XSLT.
Πίνακες
Ένας πίνακας FO είναι παρόμοιος με έναν πίνακα HTML/CSS. Ο χρήστης μπορεί να επιλέξει τις σειρές δεδομένων, πληροφορίες στυλ, χρώμα φόντου για κάθε μεμονωμένο κελί. Χρησιμοποιώντας διακριτές πληροφορίες στυλ, ο χρήστης έχει το προνόμιο να επιλέξει την πρώτη σειρά ως γραμμή κεφαλίδας πίνακα. Ο επεξεργαστής FO μπορεί να ενημερωθεί ρητά για την προδιαγραφή χώρου κάθε στήλης ή να προσαρμόσει αυτόματα το κείμενο στον πίνακα.
Ευρετηρίαση
Το XSL-FO 1.1 διαθέτει χαρακτηριστικά που βοηθούν στη δημιουργία ενός ευρετηρίου μέσω της αναφοράς σωστά επισημασμένων στοιχείων.
Οφέλη
- Κατάλληλο για δημοσίευση βάσει περιεχομένου
- Ευκολία στη χρήση
- Χαμηλό κόστος