Διαχείριση Ετικετών και Προσαρμοσμένων Δεδομένων σε Παρουσιάσεις Χρησιμοποιώντας Python
Επισκόπηση
Αυτό το άρθρο εξηγεί πώς το Aspose.Slides λειτουργεί με ετικέτες και προσαρμοσμένα δεδομένα σε παρουσιάσεις PowerPoint. Τα δεδομένα που αφορούν συγκεκριμένα την παρουσίαση μπορούν να αποθηκευτούν ως ετικέτες ή προσαρμοσμένα τμήματα XML. Οι ετικέτες είναι απλά ζεύγη κλειδιού‑τιμής τύπου συμβολοσειράς, ενώ τα προσαρμοσμένα τμήματα XML μπορούν να αποθηκεύουν δομημένα μεταδεδομένα και φορτία XML ειδικά για την εφαρμογή.
Το Aspose.Slides παρέχει API για προσθήκη, ανάγνωση, ενημέρωση, έλεγχο και αφαίρεση προσαρμοσμένων τμημάτων XML σε επίπεδο παρουσίασης, διαφάνειας και σχήματος. Τα προσαρμοσμένα τμήματα XML είναι χρήσιμα για ενσωματώσεις που αποθηκεύουν πληροφορίες όπως ταυτοποιητές διαχείρισης εγγράφων, κατάσταση ροής εργασίας, μεταδεδομένα συμμόρφωσης, δεδομένα σύνδεσης προτύπου ή άλλα δομημένα δεδομένα εφαρμογής μέσα σε μια παρουσίαση.
Αποθήκευση Δεδομένων σε Αρχεία Παρουσιάσεων
Τα αρχεία PPTX — αρχεία με την επέκταση .pptx — αποθηκεύονται σε μορφή PresentationML, η οποία αποτελεί μέρος της προδιαγραφής Office Open XML. Το Office Open XML ορίζει τη δομή του πακέτου και τις σχέσεις που χρησιμοποιείται για την αποθήκευση του περιεχομένου της παρουσίασης και των σχετικών δεδομένων.
Μια παρουσίαση περιέχει πολλαπλά τμήματα συνδεδεμένα μέσω σχέσεων. Για παράδειγμα, ένα τμήμα διαφάνειας περιέχει το περιεχόμενο μιας μόνο διαφάνειας και μπορεί να έχει ρητές σχέσεις με άλλα τμήματα όπως ορίζεται από το ISO/IEC 29500.
Τα προσαρμοσμένα δεδομένα μπορούν να αποθηκευτούν ως ετικέτες (TagCollection) ή προσαρμοσμένα τμήματα XML (CustomXmlPartCollection). Και οι δύο είναι διαθέσιμες μέσω της κλάσης CustomData.
Σημείωση
Οι ετικέτες αποθηκεύουν απλούς ζεύγους κλειδιού‑τιμής τύπου συμβολοσειράς. Τα προσαρμοσμένα τμήματα XML αποθηκεύουν δομημένα δεδομένα XML και μπορούν να συσχετιστούν με μια παρουσίαση, διαφάνεια ή σχήμα.Εργασία με Προσαρμοσμένα Τμήματα XML
Η μέθοδος CustomData.getCustomXmlParts επιστρέφει τη συλλογή των προσαρμοσμένων τμημάτων XML που σχετίζονται με ένα συγκεκριμένο αντικείμενο παρουσίασης. Για παράδειγμα:
- Η συλλογή CustomData.getCustomXmlParts της παρουσίασης περιέχει προσαρμοσμένα τμήματα XML που σχετίζονται με την ίδια την παρουσίαση.
- Η συλλογή CustomData.getCustomXmlParts της διαφάνειας περιέχει προσαρμοσμένα τμήματα XML που σχετίζονται με τη συγκεκριμένη διαφάνεια.
- Η συλλογή CustomData.getCustomXmlParts του σχήματος περιέχει προσαρμοσμένα τμήματα XML που σχετίζονται με το συγκεκριμένο σχήμα.
Χρησιμοποιήστε το Presentation.getAllCustomXmlParts όταν χρειάζεται να εξετάσετε όλα τα προσαρμοσμένα τμήματα XML στην παρουσίαση, ανεξάρτητα από το που είναι συνδεδεμένα.
Προσθήκη Προσαρμοσμένου Τμήματος XML σε Παρουσίαση
Χρησιμοποιήστε το CustomXmlPartCollection.add για να προσθέσετε δεδομένα XML σε μια συλλογή προσαρμοσμένων τμημάτων XML. Το XML πρέπει να είναι έγκυρο και μη κενό.
Το παρακάτω παράδειγμα προσθέτει δομημένα μεταδεδομένα στη συλλογή προσαρμοσμένων δεδομένων επιπέδου παρουσίασης:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
from java.util import UUID
presentation = Presentation()
try:
custom_xml_content = '<?xml version="1.0" encoding="UTF-8"?><metadata xmlns="urn:example:metadata"><documentId>DOC-1001</documentId><workflowState>Draft</workflowState></metadata>'
custom_xml_part = presentation.getCustomData().getCustomXmlParts().add(custom_xml_content)
# add εκχωρεί αναγνωριστικό αυτόματα. Ορίστε συγκεκριμένο UUID μόνο όταν απαιτείται.
item_id = UUID.randomUUID()
custom_xml_part.setItemId(item_id)
presentation.save("presentation_with_custom_xml.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Η μέθοδος add μπορεί επίσης να δέχεται XML ως πίνακα byte ή ροή εισόδου, κάτι χρήσιμο όταν το περιεχόμενο XML είναι ήδη διαθέσιμο σε δυαδική μορφή.
Προσθήκη Προσαρμοσμένου Τμήματος XML σε Διαφάνεια ή Σχήμα
Τα προσαρμοσμένα δεδομένα XML μπορούν να συσχετιστούν με μια συγκεκριμένη διαφάνεια ή σχήμα αντί για ολόκληρη την παρουσίαση. Αυτό είναι χρήσιμο όταν τα μεταδεδομένα περιγράφουν μόνο ένα αντικείμενο, όπως κλειδί προτύπου, εξωτερικό αναγνωριστικό εγγραφής ή πληροφορίες σύνδεσης.
Το παρακάτω παράδειγμα προσθέτει ένα προσαρμοσμένο τμήμα XML σε μια διαφάνεια και ένα άλλο σε ένα σχήμα:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, ShapeType
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
slide_xml_content = '<slideMetadata xmlns="urn:example:slides"><templateKey>TitleSlide</templateKey></slideMetadata>'
slide.getCustomData().getCustomXmlParts().add(slide_xml_content)
shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 250, 80)
shape.getTextFrame().setText("Customer data")
shape_xml_content = '<shapeMetadata xmlns="urn:example:shapes"><recordId>CRM-4281</recordId></shapeMetadata>'
shape.getCustomData().getCustomXmlParts().add(shape_xml_content)
presentation.save("object_custom_xml.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Το επίπεδο στο οποίο προστίθεται ένα τμήμα καθορίζει σε ποια συλλογή CustomData.getCustomXmlParts περιλαμβάνεται η σχέση. Τα δεδομένα επιπέδου παρουσίασης είναι κατάλληλα για μεταδεδομένα όλου του εγγράφου, τα δεδομένα επιπέδου διαφάνειας για πληροφορίες που ανήκουν σε συγκεκριμένη διαφάνεια, και τα δεδομένα επιπέδου σχήματος για μεταδεδομένα που συνδέονται με ένα μεμονωμένο σχήμα.
Απαρίθμηση και Έλεγχος Όλων των Προσαρμοσμένων Τμημάτων XML
Χρησιμοποιήστε το Presentation.getAllCustomXmlParts για να ανακτήσετε όλα τα προσαρμοσμένα τμήματα XML από μια παρουσίαση. Κάθε CustomXmlPart εκθέτει τον αναγνωριστικό του, το περιεχόμενο XML και τα συσχετισμένα σχήματα ονομάτων χώρου.
Το παρακάτω παράδειγμα απαριθμεί όλα τα προσαρμοσμένα τμήματα XML και τα σχήματα ονομάτων τους:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
presentation = Presentation("presentation.pptx")
try:
for custom_xml_part in presentation.getAllCustomXmlParts():
print("ItemId:", custom_xml_part.getItemId())
print("XML:")
print(custom_xml_part.getXmlAsString())
for namespace_schema in custom_xml_part.getNamespaceSchemas():
print("Namespace schema:", namespace_schema)
print()
finally:
presentation.dispose()
Η μέθοδος CustomXmlPart.getNamespaceSchemas επιστρέφει τα σχήματα XML που σχετίζονται με το προσαρμοσμένο τμήμα XML. Αυτές οι πληροφορίες μπορούν να είναι χρήσιμες όταν γίνεται έλεγχος παρουσιάσεων που περιέχουν XML που παρήχθησαν από εξωτερικά συστήματα.
Ανάγνωση και Ενημέρωση Περιεχομένου XML και ItemId
Χρησιμοποιήστε τα CustomXmlPart.getXmlAsString και setXmlAsString για εργασία με το XML ως συμβολοσειρά UTF‑8, ή τα getXmlData και setXmlData για εργασία με τα ακατέργαστα byte του XML.
Η μέθοδος CustomXmlPart.getItemId επιστρέφει το UUID που αναγνωρίζει το προσαρμοσμένο τμήμα XML στο έγγραφο Office Open XML. Χρησιμοποιήστε το setItemId όταν μια ενσωμάτωση απαιτεί νέο αναγνωριστικό.
Το παρακάτω παράδειγμα ενημερώνει το περιεχόμενο XML και τον αναγνωριστικό:
import jpure
import asposeslides
if not jpure.isJVMStarted():
jpure.startJVM()
from asposeslides.api import Presentation, SaveFormat
from java.util import UUID
presentation = Presentation("presentation.pptx")
try:
custom_xml_parts = presentation.getAllCustomXmlParts()
if len(custom_xml_parts) > 0:
custom_xml_part = custom_xml_parts[0]
# Διαβάζουμε το τρέχον XML ως κείμενο.
current_xml_content = custom_xml_part.getXmlAsString()
print(current_xml_content)
# Ενημερώνουμε το XML ως συμβολοσειρά UTF-8.
custom_xml_content = '<metadata xmlns="urn:example:metadata"><documentId>DOC-1001</documentId><workflowState>Approved</workflowState></metadata>'
custom_xml_part.setXmlAsString(custom_xml_content)
# Το getXmlData παρέχει το ίδιο περιεχόμενο XML ως ακατέργαστα byte.
custom_xml_data = custom_xml_part.getXmlData()
print(bytes(custom_xml_data).decode("utf-8"))
# Αντικαταστήστε τον αναγνωριστικό όταν απαιτείται από την ενσωμάτωση.
item_id = UUID.randomUUID()
custom_xml_part.setItemId(item_id)
presentation.save("updated_custom_xml.pptx", SaveFormat.Pptx)
else:
print("No custom XML parts found.")
finally:
presentation.dispose()
Κατά την κλήση του setXmlAsString ή του setXmlData, δώστε έγκυρο, μη κενό XML. Χρησιμοποιήστε τη μία ή την άλλη αναπαράσταση ανάλογα με το αν η εφαρμογή εργάζεται κυρίως με συμβολοσειρές ή με byte δεδομένα.
Αφαίρεση Προσαρμοσμένου Τμήματος XML
Το Aspose.Slides παρέχει αρκετούς τρόπους αφαίρεσης προσαρμοσμένων δεδομένων XML:
- Το CustomXmlPart.remove αφαιρεί το προσαρμοσμένο τμήμα XML από την παρουσίαση.
- Το CustomXmlPartCollection.remove αφαιρεί ένα συγκεκριμένο τμήμα από μια συλλογή προσαρμοσμένων τμημάτων XML.
- Το CustomXmlPartCollection.removeAt αφαιρεί το τμήμα από ένα καθορισμένο δείκτη συλλογής.
- Το CustomXmlPartCollection.clear αφαιρεί όλα τα τμήματα από μια συγκεκριμένη συλλογή.
Το παρακάτω παράδειγμα αφαιρεί ένα προσαρμοσμένο τμήμα XML επιπέδου παρουσίασης με αναφορά:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation("presentation.pptx")
try:
custom_xml_parts = presentation.getCustomData().getCustomXmlParts()
if custom_xml_parts.size() > 0:
custom_xml_part = custom_xml_parts.get_Item(0)
custom_xml_parts.remove(custom_xml_part)
presentation.save("custom_xml_removed.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Αν έχετε ήδη ένα CustomXmlPart και θέλετε να αφαιρέσετε αυτό το τμήμα από την παρουσίαση αντί να στοχεύσετε μια συγκεκριμένη συλλογή, καλέστε το CustomXmlPart.remove.
Μπορείτε επίσης να αφαιρέσετε ένα στοιχείο με δείκτη:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
presentation = Presentation("presentation.pptx")
try:
custom_xml_parts = presentation.getCustomData().getCustomXmlParts()
if custom_xml_parts.size() > 0:
custom_xml_parts.removeAt(0)
finally:
presentation.dispose()
Καθαρισμός Όλων των Προσαρμοσμένων Τμημάτων XML από Συλλογή
Χρησιμοποιήστε το clear όταν όλα τα προσαρμοσμένα τμήματα XML που σχετίζονται με ένα συγκεκριμένο αντικείμενο παρουσίασης πρέπει να αφαιρεθούν.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation("presentation.pptx")
try:
presentation.getSlides().get_Item(0).getCustomData().getCustomXmlParts().clear()
presentation.save("slide_custom_xml_cleared.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Το clear επηρεάζει μόνο τη επιλεγμένη συλλογή. Για παράδειγμα, ο καθαρισμός της συλλογής μιας διαφάνειας δεν καθαρίζει τις συλλογές επιπέδου παρουσίασης ή σχήματος.
Για να αφαιρέσετε κάθε προσαρμοσμένο τμήμα XML στην παρουσίαση, διατρέξτε τα getAllCustomXmlParts και αφαιρέστε κάθε τμήμα:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation("presentation.pptx")
try:
for custom_xml_part in presentation.getAllCustomXmlParts():
custom_xml_part.remove()
presentation.save("all_custom_xml_removed.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Διαχείριση Συνδεδεμένων ή Κοινοπραχτικών Προσαρμοσμένων Τμημάτων XML
Σε μια παρουσίαση Office Open XML, το ίδιο προσαρμοσμένο τμήμα XML μπορεί να αναφέρεται από περισσότερα από ένα αντικείμενα παρουσίασης. Για παράδειγμα, ένα υπάρχον αρχείο μπορεί να περιέχει σχέσεις από πολλαπλές διαφάνειες ή σχήματα προς το ίδιο υποκείμενο προσαρμοσμένο τμήμα XML.
Ένα κοινότμημα πρέπει να αντιμετωπίζεται ως ένα αντικείμενο δεδομένων με πολλαπλές αναφορές:
- Η ενημέρωσή του με setXmlAsString, setXmlData ή setItemId αλλάζει το υποκείμενο προσαρμοσμένο τμήμα XML, οπότε η αλλαγή ισχύει όπου και να αναφέρεται το τμήμα.
- Το getItemId μπορεί να χρησιμοποιηθεί για την ταυτοποίηση του ίδιου τμήματος XML κατά τον έλεγχο συλλογών επιπέδου αντικειμένου.
- Η αφαίρεση ενός τμήματος από μια συγκεκριμένη συλλογή getCustomXmlParts το αφαιρεί από εκείνη τη συλλογή. Χρησιμοποιήστε το CustomXmlPart.remove όταν το τμήμα πρέπει να αφαιρεθεί από την παρουσίαση.
- Πριν διαγράψετε ή αντικαταστήσετε ένα κοινό τμήμα, εξετάστε τις συλλογές επιπέδου αντικειμένου για να διαπιστώσετε αν άλλες διαφάνειες ή σχήματα το αναφέρουν ακόμα.
Οι υπερφορτώσεις του add δημιουργούν νέο προσαρμοσμένο τμήμα XML από περιεχόμενο XML· δεν δέχονται υπάρχον CustomXmlPart. Συνεπώς, κοινές σχέσεις συναντώνται κυρίως όταν φορτώνουμε παρουσιάσεις που ήδη τα περιέχουν.
Το παρακάτω παράδειγμα ελέγχει τις συλλογές παρουσίασης, διαφάνειας και σχήματος κατά ItemId και αναφέρει τμήματα που αναφέρονται από περισσότερα από ένα σημεία:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
presentation = Presentation("presentation.pptx")
try:
references_by_item_id = {}
def register_custom_xml_parts(owner_name, custom_xml_parts):
for i in range(custom_xml_parts.size()):
custom_xml_part = custom_xml_parts.get_Item(i)
item_id = str(custom_xml_part.getItemId())
references_by_item_id.setdefault(item_id, []).append(owner_name)
register_custom_xml_parts("Presentation", presentation.getCustomData().getCustomXmlParts())
for slide_index in range(presentation.getSlides().size()):
slide = presentation.getSlides().get_Item(slide_index)
register_custom_xml_parts(f"Slide {slide_index + 1}", slide.getCustomData().getCustomXmlParts())
for shape_index in range(slide.getShapes().size()):
shape = slide.getShapes().get_Item(shape_index)
register_custom_xml_parts(f"Slide {slide_index + 1}, shape {shape_index}", shape.getCustomData().getCustomXmlParts())
for item_id, owner_names in references_by_item_id.items():
if len(owner_names) > 1:
print("Shared custom XML part:", item_id)
for owner_name in owner_names:
print(" Referenced by:", owner_name)
finally:
presentation.dispose()
Αυτό το είδος ελέγχου είναι χρήσιμο πριν την τροποποίηση ή διαγραφή προσαρμοσμένων δεδομένων XML σε παρουσιάσεις που δημιουργήθηκαν από εξωτερικά συστήματα, επειδή το ίδιο τμήμα μεταδεδομένων μπορεί να συμμετέχει σε περισσότερες από μία σχέσεις.
Λήψη Τιμών Ετικετών
Στις διαφάνειες, μια ετικέτα αντιστοιχεί στη μέθοδο DocumentProperties.getKeywords. Αυτό το δείγμα κώδικα δείχνει πώς να λάβετε την τιμή μιας ετικέτας με το Aspose.Slides for Python via Java για μια Presentation:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
presentation = Presentation("presentation.pptx")
try:
keywords = presentation.getDocumentProperties().getKeywords()
finally:
presentation.dispose()
Προσθήκη Ετικετών σε Παρουσιάσεις
Το Aspose.Slides σας επιτρέπει να προσθέσετε ετικέτες σε παρουσιάσεις. Μια ετικέτα συνήθως αποτελείται από δύο στοιχεία:
- το όνομα μιας προσαρμοσμένης ιδιότητας, όπως
MyTag; - την τιμή της προσαρμοσμένης ιδιότητας, όπως
My Tag Value.
Αν χρειάζεται να ταξινομήσετε παρουσιάσεις βάσει ενός συγκεκριμένου κανόνα ή ιδιότητας, μπορείτε να προσθέσετε ετικέτες για αυτόν τον σκοπό. Για παράδειγμα, αν θέλετε να κατηγοριοποιήσετε παρουσιάσεις από χώρες της Βόρειας Αμερικής, μπορείτε να δημιουργήσετε μια ετικέτα “NorthAmerican” και να ορίσετε τη σχετική χώρα ως τιμή της.
Αυτό το δείγμα κώδικα δείχνει πώς να προσθέσετε μια ετικέτα σε μια Presentation χρησιμοποιώντας το Aspose.Slides for Python via Java:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
presentation = Presentation("presentation.pptx")
try:
tags = presentation.getCustomData().getTags()
tags.set_Item("MyTag", "My Tag Value")
finally:
presentation.dispose()
Οι ετικέτες μπορούν επίσης να οριστούν για μια Slide:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
slide.getCustomData().getTags().set_Item("tag", "value")
finally:
presentation.dispose()
Ή για ένα μεμονωμένο Shape:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ShapeType
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 10, 100, 50)
shape.getTextFrame().setText("My text")
shape.getCustomData().getTags().set_Item("tag", "value")
finally:
presentation.dispose()
Περιορισμοί
Οι ετικέτες που προστίθενται μέσω της συλλογής CustomData.getTags αποθηκεύονται μόνο στο αρχείο PowerPoint. Δεν μεταφέρονται στη δομή ετικετών PDF όταν η παρουσίαση εξαχθεί σε PDF. Συνεπώς, ένας προσαρμοσμένος αναγνωριστής που έχει οριστεί ως ετικέτα δεν μπορεί να ανακτηθεί από το PDF με ετικέτες.
Παράκαμψη: Μπορείτε να αποθηκεύσετε έναν προσαρμοσμένο αναγνωριστικό στο Alt Text του αντικειμένου (π.χ., Shape.setAlternativeText με την τιμή "MyId"). Μετά την εξαγωγή σε PDF, το Alt Text μπορεί να εμφανιστεί στη δομή ετικετών PDF.
Συχνές Ερωτήσεις (FAQ)
Μπορώ να αφαιρέσω όλες τις ετικέτες από μια παρουσίαση, διαφάνεια ή σχήμα με μία ενέργεια;
Ναι. Η tag collection υποστηρίζει την ενέργεια clear που διαγράφει όλα τα ζεύγη κλειδί‑τιμή ταυτόχρονα.
Πώς διαγράφω μια μεμονωμένη ετικέτα με βάση το όνομά της χωρίς να διατρέξω ολόκληρη τη συλλογή;
Χρησιμοποιήστε το remove στη tag collection για να διαγράψετε την ετικέτα με το κλειδί της.
Πώς μπορώ να ανακτήσω τη πλήρη λίστα των ονομάτων ετικετών για αναλύσεις ή φιλτράρισμα;
Χρησιμοποιήστε το getNamesOfTags στη tag collection; επιστρέφει έναν πίνακα με όλα τα ονόματα ετικετών.
Πώς μπορώ να βρω όλα τα προσαρμοσμένα τμήματα XML ανεξάρτητα από το που είναι αποθηκευμένα;
Χρησιμοποιήστε το Presentation.getAllCustomXmlParts για ανάκτηση όλων των προσαρμοσμένων τμημάτων XML στην παρουσίαση.
Θα πρέπει να χρησιμοποιήσω το getXmlAsString/setXmlAsString ή το getXmlData/setXmlData για την ενημέρωση ενός προσαρμοσμένου τμήματος XML;
Χρησιμοποιήστε το getXmlAsString και το setXmlAsString όταν η εφαρμογή εργάζεται με κείμενο XML UTF‑8. Χρησιμοποιήστε το getXmlData και το setXmlData όταν το XML είναι ήδη διαθέσιμο ως πίνακας byte ή όταν η επεξεργασία σε δυαδική μορφή είναι πιο βολική. Και οι δύο αναπαραστάσεις αναφέρονται στο ίδιο περιεχόμενο XML του προσαρμοσμένου τμήματος.