Ввод:
$ more a.html
<body>
<script src="one.sample.js" />
<script src="two.sample.js" />
<script src="three.sample.js" />
</body>
Преобразование:
$ more htmlScriptConvertor.xslt m
::::::::::::::
htmlScriptConvertor.xslt
::::::::::::::
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="//script[@src]">
<script src="{concat('/web/test/src/',@src)}"></script>
</xsl:template>
</xsl:stylesheet>
Это скопирует все, кроме узлов сценария, которые содержат src
attribute (вы можете добавить ограничения, что значение атрибута должно заканчиваться, например, .js
), если вам нужно ограничить преобразование сценариями javascript.
Вывод:
$ xsltproc --html htmlScriptConvertor.xslt a.html
<?xml version="1.0"?>
<html>
<body>
<script src="/web/test/src/one.sample.js"/>
<script src="/web/test/src/two.sample.js"/>
<script src="/web/test/src/three.sample.js"/>
</body>
</html>
Перенаправьте его и сохраните в a_new.html