私はXSLTをかなり使い慣れており、基本的なXMLからHTMLへの変換を行うためにのみ使用しています。現在、XSLTを使用してXML部品表から部品マニュアルを作成しようとしています。処理中に、私はSVGファイルのコピーを作成し、出力を少し変更する必要があります。しかし、私は自分のXSLTにソースSVGの内容をコピーまたは出力させることはできません。XSLTを使用してSVGファイルを変更する
ここは、私が解析しようとしているXMLコードのスニペットです:私のXSLTで
<Assembly>
<Item HPN="1234567" Rev="0" Desc="Assembly" Dwg="7654321" DwgRev="8">
</Assembly>
、私はSVGのファイル名を読んで、それのコピーを作成するには、次のコードを持っています:
<xsl:template match="Assembly/Item">
<xsl:variable name="Dwg"><xsl:value-of select="@Dwg"/></xsl:variable>
<xsl:variable name="DwgRev"><xsl:value-of select="@DwgRev"/></xsl:variable>
<xsl:if test="not(@Dwg = preceding::Item/@Dwg)">
<xsl:call-template name="SVGConversion">
<xsl:with-param name="Dwg" select="$Dwg"/>
<xsl:with-param name="DwgRev" select="$DwgRev"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
SVGConversionテンプレートは、メインスタイルシートにインポートされた別のXSLTスタイルシートに保存されます。これは必要ではないかもしれませんが、私は出力方法について心配していました。
<xsl:output method="xml" indent="no" media-type="image/svg"/>
<xsl:template name="SVGConversion">
<xsl:param name="Dwg"/>
<xsl:param name="DwgRev"/>
<xsl:variable name="SVGCall">document('Drawings/<xsl:value-of select="$Dwg"/>_<xsl:value-of select="$DwgRev"/>.svg')</xsl:variable>
<xsl:result-document encoding="UTF-8" indent="yes" href="{$ProjectPath}/App/Graphics/{$Dwg}_{$DwgRev}.svg">
<xsl:apply-templates select="$SVGCall"/>
</xsl:result-document>
</xsl:template>
このコードは、出力場所に正しいファイル名のSVGファイルを生成しますが、空です。元のSVGのコードを新しいSVGファイルにコピーするにはどうすればいいですか?処理中にSVGコードの一部にも変更を加えたいと思いますか?
私は、SVGファイルの内容を取得するのにも使用してみましたが、同じ結果が得られました。
私はKernow 1.6.1パーサーを使用していることを知るのに役立つかもしれません。それが問題の一部であるかどうかはわかりません。
誰もが提供できるアドバイスをいただければ幸いです。