Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过XSLT转换解析XML_Xml_Parsing_Xslt_Xml Parsing - Fatal编程技术网

通过XSLT转换解析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

我有一些这种格式的XML

<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
结果元素?