2010-04-02 5 views
5

XML 문서를 만듭니다. 들여 쓰기를 사용했습니다. TransformerFactory.setAttribute("indent-number", new Integer(2)); Transformer.setOutputProperty(OutputKeys.INDENT, "yes");자바가 들여 쓰기 용 공백 대신 탭을 사용하도록하십시오.

들여 쓰기를 위해 공백 대신 탭을 사용할 수 있습니까? 그리고 어떻게?

+0

공백 대신 탭을 사용하면 어떤 차이가 있습니까? 편집자가 탭을 더 좋아합니까? –

+0

transformer.setOutputProperty ("{http://xml.apache.org/xslt}indent-amount", "4"); 나를 위해 속임수를했다. 아마 아무런 보증도 없으며 실제로 자바의 버전에 크게 의존하고있는 것으로 보입니다. 개인적으로 탭 대 스페이스는 데이터 파일 일 때만 의미합니다. –

답변

2

아니요, 일반적으로 아닙니다. XSLT 사양에서는 들여 쓰기 할 때 사용할 공백을 지정할 수 없습니다.

그러나 구성 할 XSLT 프로세서 특정 항목 일 수 있습니다. 사용중인 설명서를 확인하십시오.

정말로 원한다면, afterburner XSLT 스크립트를 text() 노드에서 원하는대로 수행하는 출력에 사용할 수 있습니다.

0

아니겠습니까?

str.replace("\n ", "\n\t") (또는 원하는 공백 개수)을 대체하여 결과를 얻고 처리 할 수 ​​있습니다.

하지만 나는 그것을 반대하는 것이 좋습니다. 탭은 플랫폼에 독립적이지 않습니다.

+2

@ Bosho, 일부 속성 값을 스페이스 바에서 탭으로 바꿀 수도 있으므로'str.replace' 호출을하는 것은 위험 할 수 있습니다. 매우 바람직하지 않은가? –

+0

맞습니다. 새 행을 추가하여 업데이트를 추가했습니다. – Bozho

1

예, 탭은 몇 가지 경우에 악의적 인 것으로 간주됩니다. 그러나 TransformFactory을 사용하고 공백 대신 탭을 사용하여 들여 쓰기 동작을 변경하려면 ContentHandler의 구현을 제공해야합니다. 그런 다음 ContentHandler 구현을 새 SAXResult으로 전달하십시오. Transformer.transform(...)의 "결과"로 전달하십시오. 도약 할 농구대가 너무 많아. 또 다른 고려 사항은 출력을 통해 스마트 XSLT를 사용하는 것입니다.

관련 문제