查找并用新标签替换打开和关闭标签
Find and replace both open and close tag with new tags
我在 div 上有一堆重复的代码,我想用另一个标签替换它们。
<div class="form-group" ng-show="!loadingText">
<label>Status</label>
<div class="form-control" ng-if="request.RequestStatus">
{{ request.RequestStatus }}
</div>
</div>
在站点外替换与 <div class="form-group" ng-show="!loadingText">
匹配的开始和结束 div
标签,同时保留标签之间的内容的好方法是什么?
我想要做的替换将导致以下结果:
<fg>
<label>Status</label>
<div class="form-control" ng-if="request.RequestStatus">
{{ request.RequestStatus }}
</div>
</fg>
由于您的输入符合 XML,这在 XSLT 中很简单。
<div class="form-group" ng-show="!loadingText">
<label>Status</label>
<div class="form-control" ng-if="request.RequestStatus">
{{ request.RequestStatus }}
</div>
</div>
通过此 XSLT 1.0 转换时
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" encoding="UTF-8" indent="yes" omit-xml-declaration="yes" />
<!-- identity template: copies everything that fits no other template -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- specific <div> nodes will replaced by <fg> -->
<xsl:template match="div[@class='form-group' and @ng-show='!loadingText']">
<fg>
<xsl:apply-templates select="*"/>
</fg>
</xsl:template>
</xsl:transform>
变成
<fg>
<label>Status</label>
<div class="form-control" ng-if="request.RequestStatus">
{{ request.RequestStatus }}
</div>
</fg>
xsltproc
等命令行工具可以轻松完成这项工作。
我在 div 上有一堆重复的代码,我想用另一个标签替换它们。
<div class="form-group" ng-show="!loadingText">
<label>Status</label>
<div class="form-control" ng-if="request.RequestStatus">
{{ request.RequestStatus }}
</div>
</div>
在站点外替换与 <div class="form-group" ng-show="!loadingText">
匹配的开始和结束 div
标签,同时保留标签之间的内容的好方法是什么?
我想要做的替换将导致以下结果:
<fg>
<label>Status</label>
<div class="form-control" ng-if="request.RequestStatus">
{{ request.RequestStatus }}
</div>
</fg>
由于您的输入符合 XML,这在 XSLT 中很简单。
<div class="form-group" ng-show="!loadingText">
<label>Status</label>
<div class="form-control" ng-if="request.RequestStatus">
{{ request.RequestStatus }}
</div>
</div>
通过此 XSLT 1.0 转换时
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" encoding="UTF-8" indent="yes" omit-xml-declaration="yes" />
<!-- identity template: copies everything that fits no other template -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- specific <div> nodes will replaced by <fg> -->
<xsl:template match="div[@class='form-group' and @ng-show='!loadingText']">
<fg>
<xsl:apply-templates select="*"/>
</fg>
</xsl:template>
</xsl:transform>
变成
<fg>
<label>Status</label>
<div class="form-control" ng-if="request.RequestStatus">
{{ request.RequestStatus }}
</div>
</fg>
xsltproc
等命令行工具可以轻松完成这项工作。