2016-08-18 10 views
1

XSLTスタイルシートを使用してXMLを別のXMLに変換します。XSLテンプレートを使用してXMLファイルを別のXMLファイルに変換する

これは私がXSLテンプレート(input.xmlに)を使用する必要が私の入力XMLの一部です:

... 
    <extension> 
     <og:image>http://www.example.com/images/logos/logo-example-PNG.png</og:image> 
     <og:type>article</og:type> 
     <resourceName>http://www.example.com/big-data-search-managed-services-questions</resourceName> 
    </extension> 
    ....... 

私はXML(のOutput.xml)は次のようになりたい:

.... 
<MT N="og:image" V="http://www.example.com/images/logos/logo-example-PNG.png"/> 
<MT N="og:type" V="article"/> 
<MT N="resourceName" V="http://www.example.com/big-data-search-managed-services-questions"/> 
... 

私はこれにXSLTを使用しようとしています。しかし、私はXSLテンプレートの部分で立ち往生しています。

<MT N="" V=""/> 

「N」タグ名の名前と「V」として:私は私のXSLT拡張のXPATHに行くと、この形式に変換するための拡張の内側にすべての要素のためのテンプレートを指定しますタグの値

私はXSLTで何を指定する必要がありますか?

<xsl:template match="/extension"> 
    .... 
    </xsl:template> 
+0

兄弟XPathとは違って、XSLTは一部の部分だけを変換する必要がある場合でもドキュメント全体を処理するので、XML全体(または繰り返しパターンを知るには十分)を投稿してください。また、通常、ルートタグ内の名前空間も既知である必要があります。 – Parfait

答えて

1

これを試してみてください:

XML:

<extension xmlns:og="http://og.com"> 
<og:image>http://www.example.com/images/logos/logo-example-PNG.png</og:image> 
<og:type>article</og:type> 
<resourceName>http://www.example.com/big-data-search-managed-services-questions</resourceName> 
</extension> 

XSLT:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:og="http://og.com"> 

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

<xsl:template match="extension"> 
    <xsl:for-each select="*"> 
     <xsl:element name="MT"> 
      <xsl:attribute name="N" select="name()"/> 
      <xsl:attribute name="V" select="."/> 
     </xsl:element> 
    </xsl:for-each> 
</xsl:template> 

</xsl:stylesheet> 

出力:

<MT N="og:image" V="http://www.example.com/images/logos/logo-example-PNG.png"/> 
<MT N="og:type" V="article"/> 
<MT N="resourceName" V="http://www.example.com/big-data-search-managed-services-questions"/> 

編集入力XML:

<root xmlns:og="http://og.com"> 
<extension> 
    <og:image>http://www.example.com/images/logos/logo-example-PNG.png</og:image> 
    <og:type>article</og:type> 
    <resourceName>http://www.example.com/big-data-search-managed-services-questions</resourceName> 
</extension> 
</root> 

ここで 'ルート' ルート要素で、名前空間がそこに宣言することができます。

+1

より簡単に言えば、上記のxsl:要素を '' –

+0

に置き換えることができます。 –

+0

@MichaelKay Sir、 og名前空間を与えますMT要素内のテキスト –

関連する問題