如何在输出到 html 的 xsl 中添加新行
How to add new line in xsl with output to html
我在每个点后添加新行时遇到问题 (A., B., C.)
代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="UTF-8"/>
<xsl:param name="css"/>
<xsl:template match="/osoby/grupaStudentow/student[3]">
<html>
<body>
<h1>
<b>zadanie 1</b>
</h1>
<t>
A. nazwisko biezacego elementu:
<xsl:value-of select="./child::nazwisko"/>

B. element biezacy z podelementami:
<xsl:value-of select="descendant-or-self::*"/>

C. element o nazwie grupaPracownikow:
<xsl:value-of select="following::grupaPracownikow"/>
</t>
</body>
</html>
</xsl:template>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="//student[3]"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我试过这些:
 
 
 <text></text>
似乎没有任何效果。
还尝试了一个变量:
xsl:text
但我不知道具体把声明放在哪里,但当我尝试不同的地方时,它没有用。
XML 文件:
<osoby>
<grupaStudentow>
<student plec="m">
<imie>Jan</imie>
<nazwisko>Bohatyrowicz</nazwisko>
<nrAlbumu>123459</nrAlbumu>
<wiek> 21 </wiek>
<zdobytePunkty> 40 </zdobytePunkty>
</student>
<student plec="k">
<imie>Stefania</imie>
<nazwisko>Rudecka</nazwisko>
<nrAlbumu>127687</nrAlbumu>
<wiek> 23 </wiek>
<zdobytePunkty> 100</zdobytePunkty>
</student>
<student plec="m">
<imie>Teofil</imie>
<nazwisko>Różyc</nazwisko>
<nrAlbumu> 765432</nrAlbumu>
<wiek> 24 </wiek>
<zdobytePunkty> 80</zdobytePunkty>
</student>
<student plec="k">
<imie>Aleksandra</imie>
<nrAlbumu>445566</nrAlbumu>
<nazwisko>Billowiczówna</nazwisko>
<wiek> 22 </wiek>
<zdobytePunkty> 75</zdobytePunkty>
</student>
<student plec="m">
<nazwisko>Andrzej</nazwisko>
<imie>Kmicic</imie>
<wiek> 20 </wiek>
<zdobytePunkty> 10</zdobytePunkty>
</student>
</grupaStudentow>
<grupaPracownikow>
<pracownik plec="m">
<imie> Michał</imie>
<nazwisko> Wołodyjowski</nazwisko>
<nr_prac> 87987</nr_prac>
<wiek> 60 </wiek>
</pracownik>
<pracownik plec="m">
<imie> Bogusław</imie>
<nazwisko> Radziwił</nazwisko>
<nr_prac> 65665</nr_prac>
<wiek> 40 </wiek>
</pracownik>
<pracownik plec="k">
<imie> Barbara</imie>
<nazwisko> Wołodyjowska</nazwisko>
<nr_prac> 56734</nr_prac>
<wiek> 45 </wiek>
</pracownik>
</grupaPracownikow>
</osoby>
在 XSLT 中控制 white-space 取决于 xsl:output
的 @method
,并且可能因处理器而异。
我分别和一起尝试了 

和 
,得到了不同的结果。我不知道这是因为 XSL 还是因为我在 Mac 上,而我的 Mac 通常期望 x0A
(LF)。 Windows expects/uses CRLF,

在我的 Mac 上,使用 xsltproc,这个:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="UTF-8" />
<xsl:template match="/">
<html>
<body>
<xsl:text>Witam!</xsl:text>
<xsl:text>
</xsl:text>
<xsl:text>Linia tekstu</xsl:text>
<xsl:text>
</xsl:text>
<xsl:text>Kolejna linijka tekstu</xsl:text>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
结果:
<html><body>Witam!
Linia tekstu
Kolejna linijka tekstu</body></html>
但这将在浏览器的一行中呈现:
就像@MartinHonnen 建议的那样,我建议使用 HTML 元素来控制外观:
...
<body>
<h2>Witam!</h2>
<p>Linia tekstu</p>
<p>Kolejna linijka tekstu</p>
</body>
...
或
...
<body>
<h2>Witam!</h2>
<p>
Linia tekstu<br/>
Kolejna linijka tekstu
</p>
</body>
...
我在每个点后添加新行时遇到问题 (A., B., C.)
代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="UTF-8"/>
<xsl:param name="css"/>
<xsl:template match="/osoby/grupaStudentow/student[3]">
<html>
<body>
<h1>
<b>zadanie 1</b>
</h1>
<t>
A. nazwisko biezacego elementu:
<xsl:value-of select="./child::nazwisko"/>

B. element biezacy z podelementami:
<xsl:value-of select="descendant-or-self::*"/>

C. element o nazwie grupaPracownikow:
<xsl:value-of select="following::grupaPracownikow"/>
</t>
</body>
</html>
</xsl:template>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="//student[3]"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我试过这些:
 
 
 <text></text>
似乎没有任何效果。
还尝试了一个变量:
XML 文件:
<osoby>
<grupaStudentow>
<student plec="m">
<imie>Jan</imie>
<nazwisko>Bohatyrowicz</nazwisko>
<nrAlbumu>123459</nrAlbumu>
<wiek> 21 </wiek>
<zdobytePunkty> 40 </zdobytePunkty>
</student>
<student plec="k">
<imie>Stefania</imie>
<nazwisko>Rudecka</nazwisko>
<nrAlbumu>127687</nrAlbumu>
<wiek> 23 </wiek>
<zdobytePunkty> 100</zdobytePunkty>
</student>
<student plec="m">
<imie>Teofil</imie>
<nazwisko>Różyc</nazwisko>
<nrAlbumu> 765432</nrAlbumu>
<wiek> 24 </wiek>
<zdobytePunkty> 80</zdobytePunkty>
</student>
<student plec="k">
<imie>Aleksandra</imie>
<nrAlbumu>445566</nrAlbumu>
<nazwisko>Billowiczówna</nazwisko>
<wiek> 22 </wiek>
<zdobytePunkty> 75</zdobytePunkty>
</student>
<student plec="m">
<nazwisko>Andrzej</nazwisko>
<imie>Kmicic</imie>
<wiek> 20 </wiek>
<zdobytePunkty> 10</zdobytePunkty>
</student>
</grupaStudentow>
<grupaPracownikow>
<pracownik plec="m">
<imie> Michał</imie>
<nazwisko> Wołodyjowski</nazwisko>
<nr_prac> 87987</nr_prac>
<wiek> 60 </wiek>
</pracownik>
<pracownik plec="m">
<imie> Bogusław</imie>
<nazwisko> Radziwił</nazwisko>
<nr_prac> 65665</nr_prac>
<wiek> 40 </wiek>
</pracownik>
<pracownik plec="k">
<imie> Barbara</imie>
<nazwisko> Wołodyjowska</nazwisko>
<nr_prac> 56734</nr_prac>
<wiek> 45 </wiek>
</pracownik>
</grupaPracownikow>
</osoby>
在 XSLT 中控制 white-space 取决于 xsl:output
的 @method
,并且可能因处理器而异。
我分别和一起尝试了 

和 
,得到了不同的结果。我不知道这是因为 XSL 还是因为我在 Mac 上,而我的 Mac 通常期望 x0A
(LF)。 Windows expects/uses CRLF,

在我的 Mac 上,使用 xsltproc,这个:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="UTF-8" />
<xsl:template match="/">
<html>
<body>
<xsl:text>Witam!</xsl:text>
<xsl:text>
</xsl:text>
<xsl:text>Linia tekstu</xsl:text>
<xsl:text>
</xsl:text>
<xsl:text>Kolejna linijka tekstu</xsl:text>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
结果:
<html><body>Witam!
Linia tekstu
Kolejna linijka tekstu</body></html>
但这将在浏览器的一行中呈现:
就像@MartinHonnen 建议的那样,我建议使用 HTML 元素来控制外观:
...
<body>
<h2>Witam!</h2>
<p>Linia tekstu</p>
<p>Kolejna linijka tekstu</p>
</body>
...
或
...
<body>
<h2>Witam!</h2>
<p>
Linia tekstu<br/>
Kolejna linijka tekstu
</p>
</body>
...