2016-05-30 12 views
1

を使用してXMLに類似したノードの汎用テンプレートを作成します:どのように私はそれジェネリック1私はこのようなXMLた場合はXSLT

する各 <body>/ <text>または <number>タグの汎用テンプレートを

<?xml version="1.0" encoding="utf-8"?> 
<root> 
    <body1> 
    <text1>this is a text</text1> 
    <number1>1234,7</number1> 
    </body1> 
    <body2> 
    <text2>this is a text</text2> 
    <number2>1234,7</number2> 
    </body2> 
    <..> 
</root> 

を作成することができます

+1

本当に要素名は 'body1'、' body2'、 'text1'、' text2'ですか? –

+0

はい、サンプルの実際のノード名ではなく、同じ概念です。本文/テキスト/番号ノードの番号は任意の2文字です – zyberjock

答えて

1

どのように私はそれジェネリック1

そこに多くの方法があり、どの適用されますが処理されるXML文書(の可能なすべてのインスタンス)にに依存する各<body>/<text>または <number>タグの汎用テンプレートを作成することができますあなたは私たちに一つだけを示しているの:

<xsl:template 
match="*[starts-with(name(), 'body') and not(string-length(name() > 6))] 
      /*[starts-with(name(), 'text') and not(string-length(name() > 6))]"> 

<xsl:template 
match="*[starts-with(name(), 'body') and not(string-length(name() > 6))] 
      /*[starts-with(name(), 'number') and not(string-length(name() > 8))]"> 

それとも、あなただけ示したXML文書を持っている場合、あなたも使用することができます

<xsl:template 
match="*[starts-with(name(), 'text') and not(string-length(name() > 6))]"> 

<xsl:template 
match="*[starts-with(name(), 'number') and not(string-length(name() > 8))]"> 

あるいは

<xsl:template match="/*/*/*"/> 
1

"ジェネリック" は、この文脈では何を意味するのかわからない - おそらく:

<xsl:template match="*[starts-with(name(), 'body')]"> 
関連する問題