Vector
- это конкретный класс, который реализует интерфейс List
, так что технически это уже List
. Вы можете сделать это:
List list = new Vector();
или:
List list = new Vector();
(при условии Vector
из String
с).
Если, однако, вы хотите преобразовать его в ArrayList
, который является ближайшей реализацией List
к `Vector ~ в Java Collections Framework, то просто сделайте это:
List newList = new ArrayList(vector);
или для общей версии, предполагая Vector
из String
с:
List newList = new ArrayList(vector);
Я думаю, что использование шаблонов apply-templates и шаблонов является более чистым решением:
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:template match="/">
<body>
<xsl:apply-templates select="album" mode="ol" />
</body>
</xsl:template>
<xsl:template match="album" mode="ol">
<ol>
<xsl:apply-templates select="track" mode="li" />
</ol>
</xsl:template>
<xsl:template match="track" mode="li">
<li>
<xsl:apply-templates select="." />
</li>
</xsl:template>
<xsl:template match="track">
<a href="{@id}">
<xsl:value-of select="." />
</a>
</xsl:template>
</xsl:stylesheet>
приводит к:
<body>
<ol>
<li>
<a href="shove">Somebody To Shove</a>
</li>
<li>
<a href="gold">Black Gold</a>
</li>
<li>
<a href="train">Runaway Train</a>
</li>
</ol>
</body>
Я бы немного реструктурировал его (если вам не нужна сортировка, которую делает возможным подход для каждого
):
<xsl:template match="/album">
<ol>
<xsl:apply-templates select="track"/>
</ol>
</xsl:template>
<xsl:template match="track">
<li><a href="{@id}"><xsl:apply-templates/></a></li>
<xsl:template>
Это выглядит короче и ближе к точка, ИМХО.
Я думаю, ваш
<xsl:for-each select="track">
<li><xsl:apply-templates/></li>
</xsl:for-each>
проходит через все элементы дорожки с помощью для каждого
, а затем применяет правила по умолчанию к своим потомкам. Таким образом, содержимое для каждого
имеет тот же контекстный узел, что и шаблон match = "track"
, и, следовательно, шаблон match = "track"
никогда не совпадает.
Если вы действительно хотите использовать для каждого
таким образом, вам нужно будет изменить любой из следующих двух вещей в вашем подходе:
= "track"
в шаблоне match = "track"
, а затем используйте
из для каждого
(моя идея, и хуже, чем у Tim C
) Tim C
Решение с использованием
. Это дает то преимущество, что позволяет избежать именования и сохранить возможность сортировки треков. каждый оператор изменяет контекстный узел от альбома к треку. Вызов apply-templates по умолчанию применяет шаблоны к дочерним узлам контекстного узла, которые в вашем случае являются дочерними узлами элемента track. Следовательно, ваш шаблон, который соответствует "треку", никогда не будет запущен.