2011-07-29 8 views
0

.net에서 다음 xslt가 맞습니다. exclude-result-prefixes = "xmlns"

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" 
xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" 
exclude-result-prefixes="table xmlns"> 

하지만 자바

, 내가 색슨 사용하는 경우,
exclude-result-prefixes="xmlns" 

다음과 같은 오류가 생성됩니다 : worksheets.xsl 라인 (52)에 스타일 시트 : XSL에서

오류 XTSE0165를 : 네임 스페이스 접두사 xmlns가 선언되지 않았습니다.

+0

'는 유효하지 않습니다. –

+0

죄송합니다. 실제로'table'이 존재합니다. 단순화를 위해 쓰지 않았습니다. – guhai

+2

'xmlns'를 제외하여 수행하려는 작업을 알려 주시면 여기서 더 나아질 수 있습니다. 피하려고하는 것을 제외하지 않으면 어떻게됩니까? –

답변

0

exclude-result-prefixes에 xmlns가 포함되어 있으면 Xml 사양이 xmlns을 선언하는 것을 금지합니다. 명시 적으로 amespace 접두사 :

The prefix xmlns is used only to declare namespace bindings and is by definition bound to the namespace name http://www.w3.org/2000/xmlns/ . It MUST NOT be declared . Other prefixes MUST NOT be bound to this namespace name, and it MUST NOT be declared as the default namespace. Element names MUST NOT have the prefix xmlns.

따라서 유효한 접두사가 아니기 때문에 exclude-result-prefixes에서의 xmlns를 포함하는 이해가되지 않습니다. 자세한 내용은 http://www.w3.org/TR/xml-names/#ns-decl

+1

'xmlns = "http://schemas.openxmlformats.org/spreadsheetml/2006/main"'은 문서의 기본 네임 스페이스를 선언하는 것입니다. 인용 한 스펙 섹션은 여기에 적용되지 않습니다. http://www.w3.org/TR/xml-names/#defaulting –

+0

을 참조하십시오. ms office 2007에서 xmlns = "http://schemas.openxmlformats.org/spreadsheetml/2006/main"이 존재합니다. – guhai

+0

하지만 saxon (java)에서 기본 네임 스페이스를 제외하는 방법은 무엇입니까? – guhai

3

, 제품 오른쪽으로있는 다소 건조 질문입니다. XSLT 1.0 스펙에서는 exclude-result-prefixes에 대해 "exclude-result-prefixes 또는 xsl : exclude-result-prefixes 속성이있는 요소에 접두어에 바인드 된 네임 스페이스가 없으면 오류입니다."네임 스페이스 접두사 요소에 대해 "바운드 됨"(범위 내에 있음)은 XPath 데이터 모델 http://www.w3.org/TR/xpath/#namespace-nodes에 정의 된 것과 같습니다. 매우 신중하게 읽으면 접두사 "xmlns"에 대해 범위 내 바인딩이 없음을 나타냅니다. XPath 2.0은 "네임 스페이스 노드의 이름은 xmlns가 아니며 문자열 값이 http://www.w3.org/2000/xmlns/"이 아니어야합니다. 그러나 이것은 실질적인 변경 사항이 아니라 명확한 설명을위한 것입니다.

이제는 달성하려는 목표를 달성하는 방법에 대해 더 흥미로운 질문이 있습니다. 나는 당신이 실제로 성취하려는 것을 우리에게 말한 것은 아니라고 생각합니다. 일부 응답은 exclude-result-prefixes = "# default"가 문제를 해결할 것이라고 추측했지만 그 사실을 알기 전에 문제가 무엇인지 알고 싶습니다.