首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XSl智能搜索和替换

XSl智能搜索和替换
EN

Stack Overflow用户
提问于 2010-10-15 06:49:40
回答 1查看 428关注 0票数 1

是否可以对xml元素的属性进行查找和替换?我想要更改href指向的目录:

发自:

代码语言:javascript
复制
<image href="./views/screenshots/page1.png">

代码语言:javascript
复制
<image href="screenshots/page1.png"> 

以及来自:

代码语言:javascript
复制
<image href="./screenshots/page2.png">

代码语言:javascript
复制
<image href="screenshots/page2.png">

因此,通过去掉属于所有图像标记的href的所有"./“,但只删除图像标记。此外,如果first文件夹没有命名为"screenshots“,则将其删除。有没有一种简单的方法可以一气呵成呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-15 07:09:11

此转换:

代码语言:javascript
复制
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="node()|@*">
  <xsl:copy>
   <xsl:apply-templates select="node()|@*"/>
  </xsl:copy>
 </xsl:template>

 <xsl:template match="image/@href[starts-with(.,'./screenshots/')]">
  <xsl:attribute name="href">
   <xsl:value-of select="substring(.,3)"/>
  </xsl:attribute>
 </xsl:template>

  <xsl:template match=
   "image/@href
     [starts-with(.,'./')
     and not(starts-with(substring(.,3), 'screenshots/'))
     ]">
  <xsl:attribute name="href">
   <xsl:value-of select="substring-after(substring(.,3),'/')"/>
  </xsl:attribute>
 </xsl:template>


 <xsl:template priority="10"
      match="image/@href[starts-with(.,'./views/')]">
  <xsl:attribute name="href">
   <xsl:value-of select="substring(.,9)"/>
  </xsl:attribute>
 </xsl:template>
</xsl:stylesheet>

在此XML文档上应用时的

代码语言:javascript
复制
   <t>
    <image href="./views/screenshots/page1.png"/>
    <image href="./screenshots/page2.png"/>
    <load href="./xxx.yyy"/>
    <image href="ZZZ/screenshots/page1.png"/>
   </t>

生成所需的结果

代码语言:javascript
复制
<t>
    <image href="screenshots/page1.png"/>
    <image href="screenshots/page2.png"/>
    <load href="./xxx.yyy"/>
    <image href="ZZZ/screenshots/page1.png"/>
</t>

注意到

身份规则

  1. The使用和覆盖。这是最基本、功能最强大的XSLT设计方法。image元素的属性是以字符串modified.
  2. Only href "./" 或字符串 templates).
  3. All 以特殊方式处理的属性(by 节点仅由identity template.
  4. This处理,它是一种纯粹的“推式”solution.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3938208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档