LINUX.ORG.RU

Скопировать один атрибут в другой

 ,


0

1

Есть один xml лейаут для андроида, вот этот:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:background="?docBackground"
              android:layout_height="match_parent">
    <NonFocusableScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            >
                <EditText
                    android:id="@+id/surnameTxt"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="70"
                    android:inputType="textCapSentences"
                    android:hint="Фамилия"
                    />
    </NonFocusableScrollView>
</LinearLayout>
для отладки, было решено в хинты EditText прописать их id с помощью xsl, чтобы всё это при сборке мавеном автоматом отрабатывало
был написан xsl такой:
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


    <xsl:template match="EditText/@hint">
        <xsl:attribute name="hint" namespace="android"><xsl:copy-of select="@id"/></xsl:attribute>
    </xsl:template>

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

</xsl:stylesheet>
но на выходе я получаю
 xmlns:ns_1="android" android:id="@+id/surnameTxt" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="70" android:inputType="textCapSentences" ns_1:hint=""
в элементе EditText как мне правильно перенести id в hint ? моё гугл-фу пасует перед этим

★★★★

Если я правильно понял, что надо, то можно, например, так:

<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:android="http://schemas.android.com/apk/res/android">

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

    <xsl:template match="EditText">
        <xsl:copy>
            <xsl:attribute name="android:hint">
                <xsl:value-of select="@android:id" />
            </xsl:attribute>
            <xsl:apply-templates select="@*[local-name()!='hint']" />

            <xsl:apply-templates select="node()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>
archimag ★★★ ()
Ответ на: комментарий от archimag

вот спасибо тебе, добрый человек

<xsl:apply-templates select="@*[local-name()!='hint']" />
вот до такого я не догадался, хм и вот так ещё сделал, чтобы +@id вырезать
 <xsl:value-of select="substring(@android:id,6)" />

TERRANZ ★★★★ ()
Последнее исправление: TERRANZ (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.