이것은 분명히 SSCCE입니다. StringTemplate 들여 쓰기가 문자열 안에 공백을 추가합니다.
나는 다음과 같은 템플릿 파일이 있습니다xml(value)::=<<
<a>
<b>
^value^
</b>
</a>
>>
... 다음 코드 :
가private static final String VALUE="alpha\nbeta";
public static void main(String args[]) throws Exception {
STGroup stGroup = new STGroupFile("templates/a.xml.stg", '^', '^');
ST st = stGroup.getInstanceOf("xml");
st.add("value", VALUE);
System.out.printf("--------\n%s\n--------", st.render());
}
코드가 생성됩니다 즉
[java] --------
[java] <a>
[java] <b>
[java] alpha
[java] beta
[java] </b>
[java] </a>
[java] --------
을, 문자열 공백이 추가되면 값이 수정됩니다. 클라이언트가 공백을 제거해도 XML 파일을 구문 분석하면 공백이 추가되어 내부에 문자열로 문자열 값이 변경된 것으로 인식됩니다.
은 내가 솔루션으로 템플릿을 선언하는 것을 이해 :
xml(value)::=<<
<a>
<b>^value^</b>
</a>
>>
...하지만도이 솔루션은 xml
렌더링을 포함 할 수있는 모든 다른 노드는 오른쪽 정렬 것을 필요로한다.
예에서 상기 렌더링 값이 다른 템플릿에 포함된다고 가정하면, 다음 템플릿 :
enclosing-document(xml)::=<<
<h1>
<h2>
^xml^
</h2>
</h1>
>>
:
enclosing-document(xml)::=<<
<h1>
<h2>
^xml^
</h2>
</h1>
>>
는
또한 ...로 다시 기록 될 것이다 ... 사실상 모든 노드의 왼쪽 정렬이 필요합니다.
StringTemplate이 특정 문자열 매개 변수를 그대로 내 보내거나 (줄 바꿈이없는 경우에는 들여 쓰지 않고) 동시에 다른 모든 경우에 공백/들여 쓰기를 유지하도록 지시 할 수 있습니까 (예 : my 렌더링 된 출력은 추악하지 않을 것입니다)?
내용을 ''섹션에 묶으면 결과가 변경됩니까? – dasblinkenlight
@ dasblinkenlight 나는 당신이 제안한 것을 이해하고 있는지 확신하지 못합니다. 여하튼, CDATA가 템플릿에 추가되면, 다중 행 문자열의 들여 쓰기 중 공백 삽입에 관해서는 아무 변화도 없습니다. 또한, 최종 문서에 CDATA 섹션을 추가 할 때 부작용이 없다는 것이 확실하지 않습니다. –
나는 '에 대해 생각하고 있었는데, stringtemplate이'CDATA' 섹션에 관심을 가지기를 바랬다. 보이지 않는 것 같습니다. 오 잘 ... – dasblinkenlight