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;
}
}