2012-04-23 72 views
2

我已經創建了一個HTML頁面,它的工作原理是在div中包含div。但是,當我使用相同的HTML通過XSLT處理一些XML時,它將一個div放在另一個之上,任何人都可以想到它爲什麼在XML/XSLT中這樣做?XSLT中包裹的DIV

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet 
       version="1.0" 
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
       xmlns:xhtml="http://www.w3.org/1999/xhtml" 
> 


    <!-- Doctype - about:legacy-compat is XML equivalent of HTML5 doctype --> 
    <xsl:output method="html" indent="yes" 
       omit-xml-declaration="yes" 
       doctype-public="about:legacy-compat" 
    /> 

    <xsl:template name="Document" match="/"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>BPD</title> 
<link type="text/css" rel="stylesheet" href="big_picture_documentation_v3.css"/> 
</head> 
<body> 
<div id="container"> 
<div id="floated"> 
<p>WRAP AROUND ME!</p> 
</div> 
<xsl:apply-templates/> 
</div> 
</body> 
</html> 
</xsl:template> 

<xsl:template name="Title" match="title"> 
    <h1> 
    <xsl:apply-templates/> 
    </h1> 
</xsl:template> 
<xsl:template name="subheading" match="subheading"> 
    <h2> 
    <xsl:apply-templates/> 
    </h2> 
</xsl:template> 

</xsl:stylesheet> 

格式化這些div的CSS可以如下圖所示:

#container { margin: 5px;padding: 5px;border: 0px solid black;} 
#floated { width: 227x;float: left;padding-right: 5px;padding-bottom: 10px;} 

示例XML:

<?xml version="1.0" encoding="utf-8"?> 
<?xml-stylesheet type="text/xsl" href="v3.xsl" ?> 
<document xmlns:xhtml="http://www.w3.org/1999/xhtml"> 
    <data id="HowToUse" type="example" status="Complete"> 
    <content> 
    <title>How To Navigate This Guide</title> 
    <subheading>Using This Documentation</subheading> 

    </content> 
    </data> 

</document> 
+0

什麼是您正在轉換的xml? – Treemonkey 2012-04-23 09:19:33

+0

更新XML – 2012-04-23 09:37:22

+0

的例子我沒有完全理解你的問題在這裏......這可能是因爲xslt存在問題,它試圖輸出一個空節點。以查看這是否是問題在標題標籤之間的兩個應用模板部分之後添加一些隨機文本。 – Treemonkey 2012-04-23 10:08:31

回答

1
<div id="container"> 
<div id="floated"> 
<p>WRAP AROUND ME!</p> 
</div> 
<xsl:apply-templates/> 
</div> 

這就是你想要的我看來,是:

<div id="container"> 
<div id="floated"> 
    <p>WRAP AROUND ME!</p> 
    <xsl:apply-templates/> 
</div> 
</div> 
+0

謝謝你的迴應。最後,我重寫了代碼,它似乎與唯一不同的方法是在一個單獨的行上放置一個閉合的div標籤,因爲它之前位於同一行。很奇怪。除非我看過某些東西 - 也許只是一個脾氣暴躁的瀏覽器? – 2012-04-23 14:35:17

+0

@DanielShillcock:這個解決方案將'xsl:apply-templates'放在wrapper'div'的內部。在您提供的代碼中* *在*之外。 – 2012-04-23 16:06:34