2013-12-10 32 views
2

我是這些技術的總新手,我需要你的幫助。 我需要通過保存在xml文件中的svg點來繪製。我需要使用xsl進行轉換。當我用任何通用瀏覽器(即Mozilla)打開此xml時,我想將這些點畫成圓圈。XML點使用xsl svg繪圖

它們的位置用x和y座標描述。我用了1000x1000px的背景畫布。請問你能告訴我這個腳本有什麼問題,以及如何讓它運行? 非常感謝。

這是XML文件的樣本:

<?xml version="1.0" ?> 
<?xml-stylesheet href="points.xsl" type="text/xsl" ?> 

<waypoints> 
    <point> 
    <X>20</X> 
    <Y>20</Y> 
    </point> 
    <point> 
    <X>50</X> 
    <Y>50</Y> 
    </point> 
</waypoints> 

,這是我到現在嘗試在XSL文件中寫入:

<?xml version="1.0"?> 

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns="http://www.w3.org/2000/svg"> 

<xsl:output method="xml" indent="yes" standalone="no" 
doctype-public="-//W3C//DTD SVG 1.1//EN" 
doctype-system="http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" 
media-type="image/svg" /> 

<xsl:template match="/"> 
    <xsl:for-each select="waypoints//point"> 
    <xsl:variable name="svg_cx" select="waypoints/point/X"/> 
    <xsl:variable name="svg_cy" select="waypoints/point/Y"/> 

    <svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000" > 
     <circle cx={$svg_cx} cy={$svg_cy} r="40" stroke="black" stroke-width="3" fill="red" /> 
    </svg> 
    </xsl:for-each> 
</xsl:template> 

</xsl:stylesheet> 

回答

2

輸出for-each和使用之外的根元素相對路徑:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns="http://www.w3.org/2000/svg"> 
<xsl:output 
method="xml" 
indent="yes" 
standalone="no" 
doctype-public="-//W3C//DTD SVG 1.1//EN" 
doctype-system="http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" 
media-type="image/svg" /> 
<xsl:template match="/"> 
<svg width="1000" height="1000" > 

<xsl:for-each select="waypoints//point"> 
    <circle cx="{X}" cy="{Y}" r="40" stroke="black" stroke-width="3" fill="red" /> 
</xsl:for-each> 

</svg> 
</xsl:template> 
</xsl:stylesheet> 
+0

非常感謝。它的運行:) – user3087857