使用 xsl 使用 svg 绘制 XML 点

标签 xml xslt svg

我是这些技术的新手,我需要你的帮助。 我需要通过保存在 xml 文件中的 svg 点进行绘制。我需要使用xsl进行转换。当我用任何通用浏览器(即 mozilla)打开此 xml 时,我想将这些点绘制为圆圈。

它们的位置用 x 和 y 坐标来描述。我使用 1000x1000px 背景 Canvas 。请你告诉我这个脚本有什么问题以及如何让它运行? 非常感谢。

这是 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>

最佳答案

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>

关于使用 xsl 使用 svg 绘制 XML 点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20502872/

相关文章:

java - 从 SAX 或 Dom 中的 XML 读取元素内部的元素

c++ - 更改命名空间以自定义 boost xml 的标签名称后的反序列化问题

javascript - 在 IE 10 中转换 XML AJAX 响应时出错

css - SVG inline - 默认或继承的高度

svg - SVG 符号中的线性渐变

java - Android:onClick 事件监听器不适用于线性布局

python - Ubuntu 上的 PyXML

xslt - 删除 XSLT 中引号内的空格

xslt - DocBook XSL - 可以编辑原始样式表吗?

html - 嵌入式 SVG 与元素未对齐