Indentatie (XSL): verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
(Een tussenliggende versie door dezelfde gebruiker niet weergegeven)
Regel 1: Regel 1:
 +
== Het probleem ==
 +
 
Hoe behoud je een leesbare ingesproken weergave na een transformatie? Alleen maar een header zoals
 
Hoe behoud je een leesbare ingesproken weergave na een transformatie? Alleen maar een header zoals
  
Regel 18: Regel 20:
  
 
  lxml.etree.XMLSyntaxError: Namespace prefix xalan for indent-amount on output is not defined, line 5, column 67
 
  lxml.etree.XMLSyntaxError: Namespace prefix xalan for indent-amount on output is not defined, line 5, column 67
 +
 +
== XSL biedt geen echte oplossing ==
 +
 +
Basically is de opmaak van een XML-document zélf, iets wat buiten XSL valt. Het schijnt een ander onderdeel te zijn van het hele systeem dat eventueel iets aan opmaak kan doen. Maar een echte oplossing lijkt er niet te zijn.
 +
 +
== Oplossing: Verwijder top-level tag ==
 +
 +
Tjakka: Zo snel ik in een bepaald document de eerste tag <code><eExact xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="eExact-Schema.xsd"></code> (+ bijbehorende closing tag) verwijder, gaat indentatie goed. Vermoedelijke reden: Bij dit schema (?) horen oa. regels voor identatie, en die regels kan-ie niet vinden! Dan werkt dit gewoon:
 +
 +
<pre>
 +
<?xml version="1.0" ?>
 +
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 +
<xsl:strip-space elements="*" />
 +
<xsl:output indent="yes" encoding="UTF-8"/>
 +
</pre>
  
 
== Bronnen ==
 
== Bronnen ==
  
 
* https://stackoverflow.com/questions/24413146/preserving-whitespace-within-xml-elements-between-attributes-when-using-xslcompi?noredirect=1&lq=1
 
* https://stackoverflow.com/questions/24413146/preserving-whitespace-within-xml-elements-between-attributes-when-using-xslcompi?noredirect=1&lq=1

Versie van 14 nov 2018 11:57

Het probleem

Hoe behoud je een leesbare ingesproken weergave na een transformatie? Alleen maar een header zoals

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*" />
<xsl:output indent="yes" encoding="UTF-8"/>

lijkt niet te voldoen - De combinatie strip-space en output indent zou de oplossing zijn, maar lijkt dat niet te zijn.

Dit [1]:

<xsl:output indent="yes" encoding="UTF-8" xalan:indent-amount="4" />

werkt niet:

lxml.etree.XMLSyntaxError: Namespace prefix xalan for indent-amount on output is not defined, line 5, column 67

XSL biedt geen echte oplossing

Basically is de opmaak van een XML-document zélf, iets wat buiten XSL valt. Het schijnt een ander onderdeel te zijn van het hele systeem dat eventueel iets aan opmaak kan doen. Maar een echte oplossing lijkt er niet te zijn.

Oplossing: Verwijder top-level tag

Tjakka: Zo snel ik in een bepaald document de eerste tag <eExact xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="eExact-Schema.xsd"> (+ bijbehorende closing tag) verwijder, gaat indentatie goed. Vermoedelijke reden: Bij dit schema (?) horen oa. regels voor identatie, en die regels kan-ie niet vinden! Dan werkt dit gewoon:

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*" />
<xsl:output indent="yes" encoding="UTF-8"/>

Bronnen