This example shows you how to use a commit script to require T1 interfaces to be configured with internal clocking.
This commit script ensures that T1 interfaces are explicitly configured to use internal clocking. If the clocking statement is not included in the configuration, or if the clocking external statement is included, an error message is emitted and the configuration is not committed.
XSLT Syntax
<?xml version="1.0" standalone="yes"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:junos="http://xml.juniper.net/junos/*/junos"
xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm"
xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0">
<xsl:import href="../import/junos.xsl"/>
<xsl:template match="configuration">
<xsl:for-each select="interfaces/interface[starts-with(name, 't1-')]">
<xsl:variable name="clock-source">
<xsl:value-of select="clocking"/>
</xsl:variable>
<xsl:if test="not($clock-source = 'internal')">
<!- - or xsl:if test="$clock-source != 'internal'" - ->
<xnm:error>
<xsl:call-template name="jcs:edit-path"/>
<xsl:call-template name="jcs:statement">
<xsl:with-param name="dot" select="clocking"/>
</xsl:call-template>
<message>
This T1 interface should have internal clocking.
</message>
</xnm:error>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
SLAX Syntax
version 1.0;
ns junos = "http://xml.juniper.net/junos/*/junos";
ns xnm = "http://xml.juniper.net/xnm/1.1/xnm";
ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0";
import "../import/junos.xsl";
match configuration {
for-each (interfaces/interface[starts-with(name, 't1-')]) {
var $clock-source = {
expr clocking;
}
if (not($clock-source = 'internal')) {
<xnm:error> {
call jcs:edit-path();
call jcs:statement($dot = clocking);
<message> "This T1 interface should have internal clocking.";
}
}
}
}