2012-01-16 12 views
2

以下のouputをxslファイルの変換出力として生成できますか?無効な要素タグ名を持つxslt出力

出力が必要です(トップタグなし、タグ名は数字で始まります)。それは無効なタグがあるので、私は「テキスト」

<134>my</134> 
<114>xml</114> 
<567>notgood</567> 
<789>me</789> 

入力XML

<Root> 
<a>me</a> 
</Root> 

私が使用したXSL、数字として機能していないが、タグの開始として許可されていないために、出力方法を設定してみました。しかし、我々はこの出力を得る必要があります。

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="text" indent="no"/> 
    <xsl:template match="/"> 
    <xsl:variable name="output"> 
     <Root> 
     <134>my</134> 
     <114>xml</114> 
     <567>notgood</567> 
     <789> 
      <xsl:value-of select="/Root/a"/> 
     </789> 
     </Root> 
    </xsl:variable> 
    <xsl:copy-of select="$output/Root" /> 
    </xsl:template> 
</xsl:stylesheet> 

答えて

2

単純な変形(変化<&lt;へ):

<Root> 
    <a>me</a> 
</Root> 

変換が所望の結果を生成する:提供されるXML文書に塗布

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="text" indent="no"/> 
    <xsl:template match="/"> 
     <xsl:variable name="output"> 
      <Root> 
       &lt;134>my&lt;134> 
       &lt;114>xml&lt;114> 
       &lt;567>notgood&lt;567> 
       &lt;789><xsl:value-of select="/Root/a"/>&lt;789> 
      </Root> 
     </xsl:variable> 
     <xsl:copy-of select="$output" /> 
    </xsl:template> 
</xsl:stylesheet> 

  <134>my<134> 
      <114>xml<114> 
      <567>notgood<567> 
      <789>me<789> 

XSLT 非XML出力を生成するために効果的かつ非常に便利に使用することができます - それは、HTMLやテキストだけなります。

+0

素晴らしい.......... – Suresh

+0

@Maneesh:あなたは大歓迎です。 –

1

マークアップ文字でテキストノードを作成することができます。

<xsl:output method="text"/> 

<xsl:template match="/"> 
    <xsl:text><![CDATA[<789>]]></xsl:text> 
    <xsl:value-of select="/Root/a"/> 
    <xsl:text><![CDATA[</789>]]></xsl:text> 
</xsl:template> 

しかし、私はXSLTやその他のXMLツールがXMLではないものを作成するのに適しているかどうかはわかりません。

+0

XSLT *は非XML出力を生成するのに効果的かつ非常に便利に使用できます - HTMLまたは単なるテキストである –

0

もう1つの選択肢は、XMLに類似した出力形式を生成するため、有効なXML出力を生成して後処理することです。たとえば、<123>の代わりに<_123>を出力し、sedなどを使ってアンダースコアを取り除くことができます。

関連する問題