0

ここに私のXSLがあります:

    <xsl:template match="ImageView" >
    <view id ="3" src="{@src}" >
      <xsl:element name="form">
         <xsl:value-of select="@form"/>
     </xsl:element>
    </view>
  </xsl:template>

    <xsl:template match="TextView" >
    <view id ="5" src="{@src}" >
      <xsl:element name="form">
         <xsl:value-of select="@form"/>
     </xsl:element>
    </view>
</xsl:template>

私の場合、一般的なテンプレートを使用できるかどうかを知りたいですか? はいの場合、どのように使用できますか? 前もって感謝します。

編集:

私のXML:

               <ImageView
                android:id="@+id/3"
                android:src="@drawable/icon"
                custom:form="SOME_VALUE" />

                 <TextView
                android:id="@+id/5"
                android:src="@drawable/icon"
                custom:form="SOME_VALUE" />

私の期待される結果は次のようになります。

    <ImageView >
     <view id="3" src="@drawable/icon">
        <form> SOME_VALUE</form>
     </view>
       </ImageView>

について<TextView>も同様です。同じ値を使用しsrcますcustom:form。だけidが異なります。

4

1 に答える 1

0

属性の名前空間を修飾する必要があります。

この命令を使用して現在の要素をコピーすることもできるxsl:copyため、両方のビューに 1 つの汎用テンプレートを使用できます。

そして、substring-after関数を使用して @id 属性の値を取得しました。

うまくいけば、これで正しい道に進むことができます。

<xsl:stylesheet version="1.0" 
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
        xmlns:android="http://android"   
        xmlns:custom="http://custom" exclude-result-prefixes="android custom">
    <xsl:output indent="yes"/>

    <xsl:template match="ImageView|TextView">
        <xsl:copy>
            <view id="{substring-after(@android:id, '/')}" src="{@android:src}">
                <form><xsl:value-of select="@custom:form"/></form>
            </view>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>
于 2013-06-25T13:16:08.763 に答える