在显示到浏览器时保持布局通过XSL从XML文件获得

时间:2013-07-27 03:23:57

标签: xml xslt layout

我正在编写一个XSL文件,它将XML解析为HTML浏览器的HTML。我想知道如何在浏览器中保留XML数据布局,同时向用户显示。

例如,作为XML文件,

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type='text/xsl' href='myXSL.xsl'?>
<LISTS>
  <SCR>repository</SCR>
  <Dependency><ArtifactId>maven</ArtifactId>
  <GroupId>NO</GroupId>
<!--Display a little later into browser the detail node value as in below-->
 <detail1>
 Here is a text detail 1:
 project
 ...
 repositories
   repository
     id my-internal-site id
     url http://myserver/repo url
   repository
 repositories
 ...
 project
 </detail1>
 <detail2> Here is a text detail 2:
 </detail2>
 </Dependency>
 ...
</LISTS>

我的xsl下面的代码段显示了当前节点detail1 / detail2的值。但我需要将输出写在我的XML文件中

<table width="100%" id="tb">                         
 <tr><td><xsl:value-of select="detail1"/>
     </td><td><xsl:value-of select="detail2"/></td></tr> 
</table>

这是我用xsl得到的实际结果: enter image description here

尽管如此,我需要将这个输出放入table元素中:

Here is a text detail:
 project
 ...
 repositories
   repository
     id my-internal-site id
     url http://myserver/repo url
   repository
 repositories
 ...
 project

先谢谢您的宝贵帮助。

1 个答案:

答案 0 :(得分:0)

嗯,问题是HTML通常会将所有空格视为单个空格。如何使用<pre>元素?

<table width="100%" id="tb">                         
 <tr>
   <td><pre><xsl:value-of select="detail1"/></pre></td>
   <td><xsl:value-of select="detail2"/></td>
 </tr> 
</table>

另一个选择是使用迭代模板将空格和换行符转换为&#xA0;<br/> s,但这更简单,也可能更好。