Xslt 在生成的输出中保持缩进
在使用XSLT生成某些代码时,我很难使缩进正确对齐 在生成的代码中您会注意到第一个Xslt 在生成的输出中保持缩进,xslt,Xslt,在使用XSLT生成某些代码时,我很难使缩进正确对齐 在生成的代码中您会注意到第一个公共生成器名称…与预期的方式对齐。但是该方法的其余部分没有正确对齐,然后所有其他方法都没有正确对齐。我打算让它们缩进,以遵循代码其余部分的缩进 如何解决此对齐问题 不必担心生成代码的正确性,只需尝试演示一个示例。 XSLT <?xml version="1.0"?> <xsl:stylesheet version="2.0" xmlns:xs="http://www.w3.org/200
公共生成器名称…
与预期的方式对齐。但是该方法的其余部分没有正确对齐,然后所有其他方法都没有正确对齐。我打算让它们缩进,以遵循代码其余部分的缩进
如何解决此对齐问题
不必担心生成代码的正确性,只需尝试演示一个示例。
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;
}
}
解决方案1:不要担心生成的Java的缩进,将其作为后处理阶段通过格式化程序 解决方案2:非常注意空格的生成。始终使用xsl:text将任何文本输出包含到结果中,包括空格,以区分要输出的空格和用于使样式表可读的空格。在所有模板规则上设置一个“缩进”参数,给出当前缩进级别,并在调用apply templates时向其添加X
<xsl:apply-templates>
<xsl:with-param name="indent" select="$indent + 2"/>
</xsl:apply-templates>
使用函数或命名模板生成缩进空白:
<xsl:call-template name="do-indent">
<xsl:with-param name="indent" select="$indent + 2"/>
</xsl:call-templates>
什么是缩进?你是说缩进?不,我是说缩进。可以谷歌指出,IndentationI实际上正在开发一个非常类似的解决方案,而且它正在发挥作用。我更喜欢你的样子。谢谢