Bug 1204553 - xml:space="preserve" isn’t respected in the no-style-information "document tree" presentation of an XML document. r=hsivonen

Differential Revision: https://phabricator.services.mozilla.com/D203747
This commit is contained in:
Peter Van der Beken 2024-03-27 15:03:51 +00:00
Родитель 24650fb87f
Коммит dc75effc05
5 изменённых файлов: 86 добавлений и 2 удалений

Просмотреть файл

@ -0,0 +1,67 @@
<out>
<div id="top" xmlns="http://www.w3.org/1999/xhtml">
<link href="chrome://global/content/xml/XMLPrettyPrint.css" type="text/css" rel="stylesheet"/>
<div id="header">
<p>
This XML file does not appear to have any style information associated with it. The document tree is shown below.
</p>
</div>
<main id="tree" class="highlight">
<div>
<details open="" class="expandable-body">
<summary class="expandable-opening">
&lt;<span class="start-tag">out</span>&gt;
</summary>
<div class="expandable-children">
<span class="text">Here be sea hags. </span>
<div>
<details open="" class="expandable-body">
<summary class="expandable-opening">
&lt;<span class="start-tag">b</span> <span class="attribute-name">xml:space</span>=<span class="attribute-value">"preserve"</span>&gt;
</summary>
<div class="expandable-children">
<span class="text" style="white-space: pre-wrap">They need a lot of space, this much: .</span>
<div>
<details open="" class="expandable-body">
<summary class="expandable-opening">
&lt;<span class="start-tag">c</span>&gt;
</summary>
<div class="expandable-children">
<span class="text" style="white-space: pre-wrap">At least, most of them do: .</span>
<div>
<details open="" class="expandable-body">
<summary class="expandable-opening">
&lt;<span class="start-tag">d</span> <span class="attribute-name">xml:space</span>=<span class="attribute-value">"default"</span>&gt;
</summary>
<div class="expandable-children">
<span class="text" style="white-space: normal">But some of them don't, they only need one: . </span>
<div>
&lt;<span class="start-tag">e</span> <span class="attribute-name">xml:space</span>=<span class="attribute-value">"preserve"</span>&gt;<span class="text" style="white-space: pre-wrap">But their children might need more: .</span>&lt;/<span class="end-tag">e</span>&gt;
</div>
</div>
</details>
<span class="expandable-closing">
&lt;/<span class="end-tag">d</span>&gt;
</span>
</div>
</div>
</details>
<span class="expandable-closing">
&lt;/<span class="end-tag">c</span>&gt;
</span>
</div>
</div>
</details>
<span class="expandable-closing">
&lt;/<span class="end-tag">b</span>&gt;
</span>
</div>
</div>
</details>
<span class="expandable-closing">
&lt;/<span class="end-tag">out</span>&gt;
</span>
</div>
</main>
</div>
</out>

Просмотреть файл

@ -0,0 +1 @@
<out>Here be sea hags. <b xml:space="preserve">They need a lot of space, this much: . <c>At least, most of them do: . <d xml:space="default">But some of them don't, they only need one: . <e xml:space="preserve">But their children might need more: .</e></d></c></b></out>

Просмотреть файл

@ -12,3 +12,4 @@ fuzzy(0-1,0-5) == bug559996.html bug559996-ref.html
== bug592366-2.xhtml bug592366-ref.xhtml
== bug798068.xhtml bug798068-ref.xhtml
== bug1389406.xml bug1389406-ref.xml
== prettyprint-space.xml prettyprint-space-ref.xhtml

Просмотреть файл

@ -56,3 +56,11 @@
font-family: monospace;
white-space: pre;
}
.space-default {
white-space: initial;
}
.space-preserve {
white-space: pre-wrap;
}

Просмотреть файл

@ -33,7 +33,7 @@
</xsl:template>
<xsl:template match="*[node()]">
<div>
<div><xsl:apply-templates mode="space" select="@xml:space"/>
<xsl:text>&lt;</xsl:text>
<span class="start-tag"><xsl:value-of select="name(.)"/></span>
<xsl:apply-templates select="@*"/>
@ -48,7 +48,7 @@
</xsl:template>
<xsl:template match="*[* or processing-instruction() or comment() or string-length(.) &gt; 50]">
<div>
<div><xsl:apply-templates mode="space" select="@xml:space"/>
<details open="" class="expandable-body">
<summary class="expandable-opening">
<xsl:text>&lt;</xsl:text>
@ -68,6 +68,13 @@
</div>
</xsl:template>
<xsl:template match="@xml:space[string() = 'default']" mode="space">
<xsl:attribute name="class">space-default</xsl:attribute>
</xsl:template>
<xsl:template match="@xml:space[string() = 'preserve']" mode="space">
<xsl:attribute name="class">space-preserve</xsl:attribute>
</xsl:template>
<xsl:template match="@*">
<xsl:text> </xsl:text>
<span class="attribute-name"><xsl:value-of select="name(.)"/></span>