Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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
Xml 当根元素上有名称空间时,如何获取前面的同级值?_Xml_Xslt - Fatal编程技术网

Xml 当根元素上有名称空间时,如何获取前面的同级值?

Xml 当根元素上有名称空间时,如何获取前面的同级值?,xml,xslt,Xml,Xslt,关于我先前的问题 当根元素上有名称空间时,如何获取前面的同级值? 我也有一些要求要遵循。根据需求,输出应该是这样的。我得到一个空白的活动名称 // Description Level Activity Name Activity ID // =========== ============ ============= ====================================== // Main Entry Start Main Entry {

关于我先前的问题 当根元素上有名称空间时,如何获取前面的同级值? 我也有一些要求要遵循。根据需求,输出应该是这样的。我得到一个空白的活动名称

// Description Level        Activity Name  Activity ID
// =========== ============ ============= ======================================
// Main Entry   Start        Main Entry   {00000000-0000-0000-0000-000000000000}
// Hello World! Information  Main Entry   {00000000-0000-0000-0000-000000000000}
// Test5        Verbose                   {3b081a36-43d5-4ecc-b381-628c33316205}    
// alpha        Start        alpha        {aa5a5b9c-4b24-43af-9f49-32656385e17d}    
// Test7        Error        alpha        {aa5a5b9c-4b24-43af-9f49-32656385e17d}    
// Test1        Information               {d30741c2-da73-434a-8f0d-101f7ceb2228}    
// Test11       Transfer     Main Entry   {00000000-0000-0000-0000-000000000000}
要求
  • 第一条记录,此guid没有开始,因此活动名称将为空
  • 第二条记录,它是一个起始级别,因此得到它自己的描述
  • 第三条记录,guid有一个开始级别,因此get是该活动的名称
  • 第四条记录,此guid没有开始,因此活动名称将为空
  • 第五条记录,一个新的开始等级,有自己的描述
  • 第6条记录,guid有一个开始级别,因此get是该活动的名称
  • 第7条记录,guid有一个起始级别,因此get是该活动的名称
XML

0
主入口
0
你好,世界!
0
测试5
0
阿尔法
0
测试7
0
测试1
0
测试11
XSL

描述
水平仪
活动名称
活动ID

在对源XML中的元素进行寻址时,这部分代码不使用所需的前缀-因此未选择任何内容:

<!-- ACTIVITY NAME -->
<td>
    <xsl:value-of select="((. | preceding-sibling::E2ETraceEvent)[System/SubType/@Name='Start'])[last()]/ApplicationData"/>
</td>

它应该看起来更像这样:

<!-- ACTIVITY NAME -->
<td>
    <xsl:value-of select="((. | preceding-sibling::te:E2ETraceEvent)[s:System/s:SubType/@Name='Start'])[last()]/te:ApplicationData"/>
</td>


我说可能吧,因为修复后收到的结果与您在文章开头显示的结果不匹配。但这是您在上一个问题中已经(或应该)解决的问题。

Hi AJPErez,我试图添加完整的细节,但在stackoverflow上遇到了一些格式化问题。这就是我以前没有添加完整详细信息的原因。谢谢michael的回答,但我有一条规则,即如果活动ID不是{000-0000-000-0000},则活动名称将为空。示例6我的示例//测试1信息{d30741c2-da73-434a-8f0d-101f7ceb2228}中的记录。@Kash“但这是在上一个问题中已解决(或应该解决)的问题。”Michael,在上一个问题中,我仅在级别开始时显示活动名称。这个问题我基本上是正确的,除了一个条件,即当活动id不等于{00000000-0000-0000-0000-000000000000}并且级别不是start时,活动名称将为空。请告知。迈克尔,我需要按照规则过滤数据。我仍在寻找解决办法。请告知。
<!-- ACTIVITY NAME -->
<td>
    <xsl:value-of select="((. | preceding-sibling::E2ETraceEvent)[System/SubType/@Name='Start'])[last()]/ApplicationData"/>
</td>
<!-- ACTIVITY NAME -->
<td>
    <xsl:value-of select="((. | preceding-sibling::te:E2ETraceEvent)[s:System/s:SubType/@Name='Start'])[last()]/te:ApplicationData"/>
</td>