我在网站上有一堆重复的代码,我想用另一个标签代替。
<div class="form-group" ng-show="!loadingText">
<label>Status</label>
<div class="form-control" ng-if="request.RequestStatus">
{{ request.RequestStatus }}
</div>
</div>
在网站上更换匹配div
的开始和结束<div class="form-group" ng-show="!loadingText">
标记,同时保留标记之间的内容时,有什么好方法?
我期待的替代品将产生以下结果:
<fg>
<label>Status</label>
<div class="form-control" ng-if="request.RequestStatus">
{{ request.RequestStatus }}
</div>
</fg>
答案 0 :(得分:1)
由于您的输入符合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
等命令行工具可以轻松完成工作。