2012-02-08 16 views
0

私は約25の要素を持つXMLファイルを持っています。 2つの要素を変換し、残りのXMLを保持したいだけです。誰かが私に方法を教えてもらえますか?オンラインのすべての例は、全体としてXML文書を変更しています。私はこれを望みません。 2つの要素の値を変更したいだけです。XSLを使用してXMLの小さな部分を修正する方法

+2

これら2つの要素はどのようにして一意に識別されますか?xmlのサンプルを投稿してください。 – Kristofer

+0

サンプルXMLを投稿し、その2つの要素を何に変換したいのですか? –

答えて

0

ここでは、xsdファイルを解析して、そこからすべての注釈を削除します。

<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 

<!-- copy all nodes and attributes --> 
<xsl:template match="node() | @*"> 
    <xsl:copy> 
     <xsl:apply-templates select="node() | @*"/> 
    </xsl:copy> 
</xsl:template> 

<!-- but remove annotations --> 
<xsl:template match="xs:annotation"/> 
6

このようなタスクは、例えば、変更される要素のテンプレートを追加することによって

<xsl:template match="@* | node()"> 
    <xsl:copy> 
    <xsl:apply-templates select="@* | node()"/> 
    </xsl:copy> 
</xsl:template> 

した後である恒等変換テンプレートを使用することによって解決されます

<xsl:template match="foo"> 
    <bar> 
    <xsl:apply-templates select="@* | node()"/> 
    </bar> 
</xsl:template> 

foobarの要素を変更し、および/または

<xsl:template match="foobar"/> 

foobar要素を削除します。私たちは、その内容とbaz要素をコピーしたいが、我々は限り、あなたは恒等変換を保つように、テンプレート

<xsl:template match="baz"> 
    <xsl:copy> 
    <xsl:apply-templates select="@* | node()"/> 
    <new>...</new> 
    </xsl:copy> 
</xsl:template> 

を追加することができますnew要素を追加したい場合は

は、例えば、あなたの他の例を与えるために、あなたが変更したくないものについてはalive(apply-templates)を使用すると、変更する各要素のテンプレートを記述することで、スタイルシートを構造化することができます。

+0

ありがとうございました!その働き。 – Chandu

関連する問題