В настоящее время у меня возникают проблемы с преобразованием XML / XSLT в HTML, над которым я работаю. Короче говоря, я хочу использовать теги <br />
в теге XML, чтобы в файле HTML после преобразования отображался разрыв строки. После некоторых попыток я заставил это работать, но за счет некоторых других функций. А именно возможность выделять детали.
Сначала выгруженный XML-файл. Таким образом, существует несколько возможных тегов, каждый из которых содержит имя и фамилию. В этом случае я хочу, чтобы имя и фамилия анализировались в отдельной строке (отсюда и тег <br />
). Кроме того, в некоторых случаях необходимо выделить имя или фамилию. В данном случае в строке 3 фамилия «Рука».
<swift_native>
<tag tag_code=":1:"><![CDATA[Jaco<br />Ronnie]]></tag>
<tag tag_code=":2:"><![CDATA[John<br />Doe]]></tag>
<tag tag_code=":2:"><![CDATA[Robbie<br />]]><highlight>The Hand</highlight></tag>
</swift_native>
Пока что, в зависимости от метода, который я использую в XSLT, я могу либо правильно расставить строки, либо выделить их. Но не то и другое: это показано на следующем рисунке.
Ниже вы видите использованный XSLT-файл. Здесь вы можете видеть, что использование <xsl:apply-templates/>
приведет к выделению, а <xsl:value-of select="." disable-output-escaping="yes"/>
позволит мне правильно использовать <br />
.
<?xml version="1.0"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- HTML Layout definition -->
<xsl:output method="html"/>
<xsl:template match="swift_native">
<html>
<head>
<title>
<xsl:apply-templates select="message_id"/>
</title>
<style type="text/css">
#tbl1,#tbl2 {display:none;}
#lnk1,#lnk2 {border:none;background:none;width:85px;}
td {FONT-SIZE: 75%; MARGIN: 0px; COLOR: #000000;}
td {FONT-FAMILY: verdana,helvetica,arial,sans-serif}
a {TEXT-DECORATION: none;}
table.subtable {border-collapse:collapse;}
table.subtable td {border:1px solid black;}
</style>
</head>
<body>
<table cellpadding="3" width="100%" class="subtable">
<tr bgcolor="#cccccc">
<td colspan="3">Block4</td>
</tr>
<xsl:apply-templates select="tag" />
</table>
</body>
</html>
</xsl:template>
<!-- Variable definition -->
<xsl:template match="tag">
<tr>
<td>
<b>
<xsl:value-of select="@tag_code" />
</b>
</td>
<td>
<xsl:value-of select="." disable-output-escaping="yes"/>
</td>
<td>
<xsl:apply-templates/>
</td>
</tr>
</xsl:template>
<xsl:template match="highlight">
<span style="background-color:yellow;">
<xsl:apply-templates/>
</span>
</xsl:template>
</xsl:stylesheet>
Очевидно, возникает вопрос: знает ли кто-нибудь, как я могу использовать как тег <br />
, так и выделение?