1

嗨,我有以下 xml

 <primaryie>
  <content-style font-style="bold">VIRRGIN system 7.204, 7.205</content-style> 
  </primaryie>

通过应用下面的 xslt,我可以选择数字。

<xsl:value-of select="current()/text()"/>

但在以下情况下

    <primaryie>
  <content-style font-style="bold">VIRRGIN system</content-style> 
  7.204, 7.205 
  </primaryie>

如何选择号码?我想要使​​用 xslt:parent of content style 之类的东西。

我也有一些情况,两个 xmls 都在一起。如果两种情况都存在,请告诉我如何选择号码。

谢谢

4

3 回答 3

1

使用

<xsl:template match="primaryie/text()">
  <!-- Processing of the two numbers here -->
</xsl:template>

为确保选择执行的模板,您可以使用一个xsl:apply-templates选择想要的文本节点,并且它本身位于选择执行的模板中。

例如

<xsl:template match="primaryi">
  <!-- Any necessary processing, including this: -->
  <xsl:apply-templates select="text()"/>
</xsl:template>
于 2013-03-26T14:42:10.997 回答
1
<xsl:template match="content-style">
  <xsl:value-of select="parent::*/text()"/>
</xsl:template>

或者,或者,

<xsl:template match="content-style">
  <xsl:value-of select="../text()"/>
</xsl:template>
于 2013-03-26T14:01:51.487 回答
0

我认为使用类似于下面的模板设计应该会有所帮助:

<xsl:template match="primaryie">
    <!-- Do some stuffs here, if needed -->
    <!-- With the node() function you catch elements and text nodes (* just catch elements) -->
    <xsl:apply-templates select="node()"/>
</xsl:template>

<xsl:template match="content-style">
    <!-- Do some stuffs here, if needed -->
    <!-- same way -->
    <xsl:apply-templates select="node()"/>
</xsl:template>

<!-- Here you got the template which handle the text nodes. It's probably better to add the ancestor predicate to limit its usage to the only text nodes we need to analyze ('cause the xslt processor often has some silent calls to the embedded default template <xsl:template match="text()"/> and override it completely could have some spectacular collaterall damages). -->
<xsl:template match="text()[ancestor::primaryie]">
   <!-- Do your strings 'cooking' here -->
</xsl:template>
于 2013-03-26T13:45:41.380 回答