Html xslt获取以下直接同级

Html xslt获取以下直接同级,html,xslt,xslt-1.0,xslt-2.0,marc,Html,Xslt,Xslt 1.0,Xslt 2.0,Marc,我有以下资料: <root> <html> <table <tr> <td width="1%" height="20"></td> <td width="18%">Book Location </td> <td width="81%">Technology (Applied sciences) Circulation</td>

我有以下资料:

 <root>
  <html>
   <table
    <tr> 
     <td width="1%" height="20"></td>
     <td width="18%">Book Location </td>
     <td width="81%">Technology (Applied sciences) Circulation</td>
    </tr>

您可以使用以下选项:

<xsl:value-of select="//*[text()='Book Location ']/following-sibling::*[1]" />

而不是

<xsl:value-of select="following-sibling" />

您可以使用以下功能:

<xsl:value-of select="//*[text()='Book Location ']/following-sibling::*[1]" />

而不是

<xsl:value-of select="following-sibling" />

您的模板表明您的思维方式像程序语言程序员。XSLT或多或少可以用这种习惯用法编写,但它不是XSLT的自然习惯用法。以这种方式编写的代码往往比更自然的代码更长、更混乱。特别是,尽管它们有很好的用途,
对于每个
元素通常都带有一点代码味道

这对我来说似乎更自然,而且似乎有效(但我不得不在您输入的修改版本上进行测试,因为您提供的不是有效的XML):


从这里开始


=LDR 00000 NAM 2200000Ia 4500


=952\\$cLocation:
注:

  • 更具体的匹配表达式消除了原始表达式中每个
都需要

  • 不要试图将整个转换放在一个模板中,而是使用单独的模板来转换单独的元素。这不仅更简洁,而且有助于简化表达式,因为每个模板都与自己的上下文相关联,表达式将根据上下文进行计算
  • 要使用“跟随同级”作为轴名称,而不是元素名称,必须附加一个双冒号和至少一个某种类型的节点测试
  • “后续同级”轴可以包含多个节点,因此,如果只需要紧随其后的节点,则需要指定该节点(如上所述)
  • 我可能会选择直接转换包含位置的
    td
    ,而不是通过标签
    td
    的模板间接转换。这对我来说似乎更清晰,但我没有这样做,因为它的语义稍有不同

    • 您的模板表明您的思维方式像一个过程语言程序员。XSLT或多或少可以用这种习惯用法编写,但它不是XSLT的自然习惯用法。以这种方式编写的代码往往比更自然的代码更长、更混乱。特别是,尽管它们有很好的用途,
      对于每个
      元素通常都带有一点代码味道

      这对我来说似乎更自然,而且似乎有效(但我不得不在您输入的修改版本上进行测试,因为您提供的不是有效的XML):

      
      从这里开始
      
      
      =LDR 00000 NAM 2200000Ia 4500
      
      
      =952\\$cLocation:
      
      注:

      • 更具体的匹配表达式消除了原始表达式中每个
    都需要
    
    
  • 不要试图将整个转换放在一个模板中,而是使用单独的模板来转换单独的元素。这不仅更简洁,而且有助于简化表达式,因为每个模板都与自己的上下文相关联,表达式将根据上下文进行计算
  • 要使用“跟随同级”作为轴名称,而不是元素名称,必须附加一个双冒号和至少一个某种类型的节点测试
  • “后续同级”轴可以包含多个节点,因此,如果只需要紧随其后的节点,则需要指定该节点(如上所述)
  • 我可能会选择直接转换包含位置的
    td
    ,而不是通过标签
    td
    的模板间接转换。这对我来说似乎更清晰,但我没有这样做,因为它的语义稍有不同

  • 谢谢你,鲁佩什!我试过了,但还是得到了一个空值。我已经更新了答案,现在这个对你有用了汉克斯,鲁佩什!你的解决方案和约翰·博林格的一样有效。我会投票给你们两个。干杯谢谢你,鲁佩什!我试过了,但还是得到了一个空值。我已经更新了答案,现在这个对你有用了汉克斯,鲁佩什!你的解决方案和约翰·博林格的一样有效。我会投票给你们两个。干杯所以你们试图发出文本“技术(应用科学)流通”?是的,我想从这个数据集中得到“技术(应用科学)流通”。所以你们试图发出文本“技术(应用科学)流通”?是的,我想得到“技术(应用科学)流通”我同意您使用正确的XSL习惯用法,如果可以的话,我会再添加一个来解释。我忘了在我的帖子中指出我正在将记录转换为文本而不是xml。你的解决方案也奏效了,我将进一步研究。干杯同意您使用正确的XSL习惯用法,如果可以的话,我会再添加一个习惯用法供您解释。我忘了在我的帖子中指出我正在将记录转换为文本而不是xml。你的解决方案也奏效了,我将进一步研究。干杯