2013-02-28 87 views
0

我有一个节点鸿沟,并选择价值XSLT节点

<air:AirAvailInfo ProviderCode="1G"> 
    <air:BookingCodeInfo BookingCounts="C4|Z4|I4|D4|Y4|W4|Q4|E4|G4|T4|N4|B4|X4|U4|O4|V4|H4|L4|K4"/> 
</air:AirAvailInfo> 

正是在XSLT 1.0代码的XML文件。 如何仅更改节点中的一个扇区?我怎样才能做到这一点?

<info> 
    <code>H</code> 
    <status>4</status> 
</info> 

谢谢!

+0

这只是取决于如何选择这些代码和状态。尝试以一般方式解释你正在尝试做什么。 – 2013-02-28 11:07:06

+0

所以说,我知道我只需要从列表中选择“H” – Vitmais 2013-02-28 11:26:54

+0

而来自该列表的值可能是不同的顺序,并且代码的状态(在您发布的代码中为4)可能不同于4?此外,该列表中可能有多个H元素?或者至少每个元素都是唯一的,并且语法相同:LETTER + NUMBER? – 2013-02-28 11:35:46

回答

0

我的回答假设:在清单中BookingCounts由字母和数字的串联形成

  • 所有元素。数字的长度始终为1.

  • 列表中的所有元素都是唯一的,其中唯一关系仅由字母的唯一性来定义。所以我们无法在同一个列表中找到元素H2 H5。

  • OP只需要检索列表中的H元素。

以下这些假设一个解决办法是:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:air="http://airnamespace.com" version="1.0"> 
    <xsl:output method="xml" indent="yes"/> 

    <!-- Match the attribute BookingCounts inside air:BookingCodeInfo --> 
    <xsl:template match="air:BookingCodeInfo"> 
     <info> 
      <code>H</code> 
      <status><xsl:value-of select="substring(substring-after(@BookingCounts, 'H'), 1, 1)" /></status> 
     </info> 
    </xsl:template> 

</xsl:stylesheet> 

如果一些假设是不正确的,告诉我,我会改变的代码。

+0

你的心灵)真的,谢谢。 – Vitmais 2013-02-28 12:26:35