使用 XSLT 生成一些代码时,我无法正确对齐缩进。
在生成的代码中,您会注意到第一个public Builder name...
与预期的方式对齐。但是该方法的其余部分未正确对齐,然后所有其他方法未正确对齐。我打算让它们缩进以遵循其余代码的缩进。
如何解决此对齐问题?
不用担心生成代码的正确性,只是尝试展示一个示例。
XSLT
<?xml version="1.0"?>
<xsl:stylesheet version="2.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:output method="text" name="text" />
<xsl:strip-space elements="*" />
<xsl:template match="..." mode="builder">public Builder <xsl:value-of select="fu:lowercaseFirstLetter(@name)"/>(final String value) {
this.dao.getMy<xsl:value-of select="fu:capitalizeFirstLetter(../@name)"/>().set<xsl:value-of select="fu:capitalizeFirstLetter(@name)"/>(value);
return this;
}
</xsl:template>
<xsl:template match... >
<xsl:result-document href="..." format="text">
public class <xsl:value-of select="..."/> implements Parent {
public boolean test(Object o) {
<xsl:apply-templates mode="builder"/>
return true;
}
}
</xsl:result-document>
</xsl:template>
</xsl:stylesheet>
生成的代码
public class ATest implements Parent {
public boolean test(Object o) {
public Builder name(final String value) {
dao.getMyATest().set_valid(value);
return this;
}
public Builder name(final String value) {
dao.getMyATest().set_valid(value);
return this;
}
public Builder name(final String value) {
dao.getMyATest().set_valid(value);
return this;
}
public Builder name(final String value) {
dao.getMyATest().set_valid(value);
return this;
}
return true;
}
}
预期结果
public class ATest implements Parent {
public boolean test(Object o) {
public Builder name(final String value) {
dao.getMyATest().set_valid(value);
return this;
}
public Builder name(final String value) {
dao.getMyATest().set_valid(value);
return this;
}
public Builder name(final String value) {
dao.getMyATest().set_valid(value);
return this;
}
public Builder name(final String value) {
dao.getMyATest().set_valid(value);
return this;
}
return true;
}
}