我有成堆的一些标签,没有放在任何标签中。 但我需要将其放在标签中,直到下一个序列标签到来为止
我尝试过相同的方法,但是对于每个孤立标记,它们将被放置在不同的部分,这与预期的不同
输入Xml:
<title>Info111</title>
<ul> underline<ul>
<li>list</li>
<serial>
<em>this is for em</em>
<title>serial title</title>
</serial>
<title>Info2222</title>
<ul> underline2222<ul>
<li>li for list</li>
我的xslt代码:
<xsl:variable name='list' select='//serial'/>
<xsl:template match='/'>
<xsl:for-each select='$list'>
<xsl:element name='serial'>
<xsl:apply-templates select='*[not(name(.)="serial")]'/>
</xsl:element>
</xsl:for-each>
</xsl:template>
实际输出
:
<serial>
<title>Info111</title>
</serial>
<serial>
<ul> underline<ul>
</serial>
<serial>
<li>list</li>
</serial>
<serial>
<em>this is for em</em>
<title>serial title</title>
</serial>
<serial>
<title>Info2222</title>
</serial>
<serial>
<ul> underline2222<ul>
</serial>
<serial>
<li>li for list</li>
</serial>
预期输出:
<serial>
<title>Info111</title>
<ul> underline<ul>
<li>list</li>
</serial>
<serial>
<em>this is for em</em>
<title>serial title</title>
</serial>
<serial>
<title>Info2222</title>
<ul> underline2222<ul>
<li>li for list</li>
</serial>
请帮助我解决这个问题
答案 0 :(得分:1)
如果您使用正确的术语,它将为所有人提供帮助。我认为“标签”可能意味着“元素”。 (元素实际上有两个标签,一个开始标签和一个结束标签)。最初我不知道您所说的“束”是什么意思,但是在研究您的示例时,我认为您的意思是“群体”。
您显示的输入内容不是完整的文档。在格式正确的XML中,始终有一个根元素。因此,我不知道您所说的“孤立标签”是什么意思-格式正确的XML中的每个元素都有一个父节点。
在我们讨论您的问题时,如果您在问题上放置“ xslt 1.0”或“ xslt 2.0”或“ xslt 3.0”标签(StackOverflow意义上的“标签”,而不是XML的意义),因为这通常会影响答案。
您显示的XSLT代码仅处理$ list中的元素,即名为“ serial”的元素。因此,我看不到如何获取包含Info111和Info222的输出。
为此的XSLT 2.0代码是:
<xsl:for-each-group select="*" group-adjacent="boolean(self::serial)">
<xsl:choose>
<xsl:when test="self::serial">
<xsl:copy-of select="current-group()"/>
</xsl:when>
<xsl:otherwise>
<serial><xsl:copy-of select="current-group()"/></serial>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each-group>
答案 1 :(得分:0)
感谢您的回应! 现在,使用以下代码可以正常工作。
String imageUrl = BASE_URL + arrayList.get(position).getSearchUrl() + "&size=32";
int resID = context.getResources().getIdentifier("icon", "drawable",context.getPackageName());
if (resID == 0) {
Log.d("TAG", "onBindViewHolder: " + resID);
viewHolder.tvIcon.setImageResource(arrayList.get(position).getIcon());
} else {
Log.d("TAG", "onBindViewHolder: Glide" + resID);
Glide.with(context)
.load(imageUrl)
.apply(requestOptions
.placeholder(R.drawable.default_favicon)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.fitCenter())
.into(viewHolder.tvIcon);
}
并且我得到了预期的输出:)