通过XSLT转换解析XML
我有一些这种格式的XML通过XSLT转换解析XML,xml,parsing,xslt,xml-parsing,Xml,Parsing,Xslt,Xml Parsing,我有一些这种格式的XML <items> <item> <float>0.75</float> <string>NAME</string> <string>Bob</string> <string>CREATION_TIME</string> <timestamp>2012-11-01 00:03:08</tim
<items>
<item>
<float>0.75</float>
<string>NAME</string>
<string>Bob</string>
<string>CREATION_TIME</string>
<timestamp>2012-11-01 00:03:08</timestamp>
<string>OCCUPATION</string>
<null />
</item>
</items>
0.75
名称
上下快速移动
创建时间
2012-11-01 00:03:08
职业
我想把它转换成这样的格式
<item>
<NAME>Bob</NAME>
<CREATION_TIME>2012-11-01 00:03:08</CREATION_TIME>
<OCCUPATION></OCCUPATION>
</item>
上下快速移动
2012-11-01 00:03:08
是否可以通过简单的XSLT转换实现,或者我必须编写自己的解析器?
<xsl:template match="item">
<xsl:copy>
<xsl:apply-templates select="string[position() mod 2 = 1]"/>
</xsl:copy>
</xsl:template>
<xsl:template match="string">
<xsl:element name="{.}">
<xsl:value-of select="following-sibling::*[1]"/>
</xsl:element>
</xsl:template>
+1-一个快速项目:您的解决方案完全删除了
元素,而OP的预期解决方案保留了它。@ABach,您是对的,我目前不确定是什么决定了要处理和关联哪些元素。我会问海报。@MartinHonnen如果你对所有字符串进行编号,奇数是键,偶数是值。@Narabhut,
接受奇数字符串
元素,但那样的话,职业
就不会被视为键(因为它是第四个字符串
)。这就是您想要的吗?您能解释一下您想要处理项元素的哪些子元素,以及您想要关联哪些子元素吗?为什么忽略了float
,哪些元素应该配对以创建some value
结果元素?