小编wol*_*son的帖子

为什么awk sub/gsub只是擦除匹配?

我在Windows上的批处理文件中使用awk.出于某种原因,sub/gsub正在擦除匹配,而不是替换.我把头发拉过来......这是一个示例线:

awk "{ gsub(/ZSection/, "Section"); print}" temp1.txt > temp2.txt
Run Code Online (Sandbox Code Playgroud)

结果:"ZSection"刚刚在temp2.​​txt中消失.没有"部分",任何地方.

我在我的机器上的其他脚本中使用sub/gsub没有问题,语法相同(我认为?除非我只是盲目和/或疯狂).

我错过了什么?是否有可能批处理文件中的其他操作与sub/gsub的功能相混淆?救命!

awk

3
推荐指数
2
解决办法
559
查看次数

Schematron中的XPath:如何确定节点上是否存在xmlns属性

我正在尝试匹配缺少xmlns属性的特定元素的任何实例,但是我无法获得与语法匹配的问题.我的xml如下所示:

<root>
<node xmlns:m="http://google.com"/>
<node style="block"/>
</root>
Run Code Online (Sandbox Code Playgroud)

我想返回第一个节点,但不是第二个节点.如果我根据第二个节点上显示的样式属性进行匹配,我可以简单地使用not(@style),但这不适用于(@xmlns:m).我试图通过搜索具有与URI匹配的值的任何属性来绕过这一点,但同样,这适用于其他属性,但不适用于xmlns:m.是否需要使用XPath匹配/解析xmlns属性所需的某种限制或语法怪癖?

xml xpath schematron

3
推荐指数
1
解决办法
403
查看次数

XPATH/XSLT - 仅匹配具有给定属性的第一个后续祖先

我正在尝试编写一个仅与包含给定属性的第一个后续祖先匹配的 xpath 表达式,但我找不到适当的 xpath。一个简化的 XML 示例:

<root>
  <node href="L1_value_1">
    <node href="L2_value_1">
      <node href="L3_value_1">
        <node href="L4_value_1"/>
      </node>
    </node>
    <node/>
    <node href="L2_value_2"/>
    <node href="L2_value_3"/>
  </node>
  <node href="L1_value_2"/>
  <node href="L1_value_3"/>
</root>
Run Code Online (Sandbox Code Playgroud)

例如,如果我位于包含 href="L4_value_1" 的节点上,我只想返回包含 href="L2_value_2" 的节点。不幸的是我找不到正确的xpath。我尝试过以下方法:

<xsl:apply-templates select="ancestor::*/following-sibling::*[@href][1]"/>
Run Code Online (Sandbox Code Playgroud)

--返回每个祖先级别的第一个匹配的兄弟节点,即示例中包含 L2_value_2 和 L1_value_2 的节点。

<xsl:apply-templates select="ancestor::*[1]/following-sibling::*[@href][1]"/>
Run Code Online (Sandbox Code Playgroud)

--仅返回父级别的第一个匹配的后续兄弟,即示例中没有任何内容。

如何根据需要遍历树并捕获第一个匹配项?

xslt xpath

3
推荐指数
1
解决办法
1192
查看次数

XSLT/Xpath - 在单个语句中组合多个轴来查找“侄孙”?

我有一个 XML 文档,我需要找到距我的前一个兄弟姐妹最近的后代(在树中物理上最接近的 - 示例中的“宝藏”)。我不知道任何元素名称、元素内容,也不知道当前节点或我要选择的节点在文档中的深度。示例如下:

<tagA>
    <tagB>
        <tagC>
             junk
        </tagC>
        <tagC>
            <tagD>
                 junk
            </tagD>
        </tagC>
    </tagB>
    <tagB>
        <tagC>
            treasure
        </tagC>
    </tagB>
</tagA>
<tagX/>
Run Code Online (Sandbox Code Playgroud)

从 tagX 的位置,我需要能够测试我的前一个兄弟姐妹是否有后代,并选择最接近的一个“Treasure”。

我猜descendant::*[last()]一旦选择了前面的同级,我就可以使用它,但我不确定到达那里的语法。显然previous-sibling::descendant::*[last()]行不通。

有没有办法组合这些轴以在单个查询中实现此目的?

xml xslt xpath

2
推荐指数
1
解决办法
1105
查看次数

标签 统计

xpath ×3

xml ×2

xslt ×2

awk ×1

schematron ×1