<py:match path="foo">
<?python
import os
href = select('@href').render()
SOMEWHERE = ... # what file contained the foo tag?
path = os.path.abspath(os.path.join(os.path.dirname(SOMEWHERE), href)
f = file(path,'r')
# (do something interesting with f)
?>
</py:match>
...
<foo href="../path/relative/to/this/template/abcd.xyz"/>
"어딘가"로 무엇을해야합니까? href
속성이 다른 태그의 href
속성과 같이 foo
태그가있는 파일에 상대적이어야합니다.genshi 템플릿에서 py : match와의 상대 경로 해석하기
또는 py : match 블록을 포함하는 파일은 무엇입니까? 이것은 foo
태그가있는 파일과 다른 디렉토리에있을 수 있기 때문에 덜 유용합니다.
덜 좋음 : Genshi 외부에서 컨텍스트 인수로 렌더링 할 파일의 경로를 제공 할 수 있지만 위의 두 디렉터리와 다른 디렉터리에있을 수 있습니다.
필자가 기대하는 사람들에게 유용하지만 내 코드는 xi가있는 파일 A에서 Genshi를 실행할 수 있습니다. include href = "B/C/D"이고 D는 xi : include href = "../E"등, 내가 정말로하고 싶었던 것은 Genshi에서 E 또는 F의 위치에 대한 지식을 추출하는 것입니다 ... 이것은 Genshi에 패치를 적용하는 것과 관련이 있습니다. 비록 내가 질문을 한 후에 레일즈로 바꿨습니다. :-) –
오, 알았어요. 'foo' 태그가있는 파일이 메인 파일이라면 위의 해결책은 실제로 문제를 해결할 것입니다 (어떤 이유로이 시나리오를 내재적으로 가정합니다. 그러나 실제로 당신의 질문을 따르지 않습니다 - 미안 해요!). 이것이 주 파일에 포함 된 또 다른 파일 인 경우, 드라이버 프로그램은 위치 및 원점을 알 수 없으며 올바른 경로를 포함 할 수 없습니다. 이 경우에는 문제의 해결책이 없습니다 (자신의 위치에 대해 알려주는 모든 * 파일의 시작 부분에 명백한 전역 상수가있는 것을 제외하고는 - 확실히 실현 가능하지 않음). – user8472
나는 이미 파이썬을 사용하고 있었기 때문에 Genshi를 사용하고 있습니다. 지금까지 루비를 배우는 데 신경 쓰지는 않았지만, 레일즈가 실제로 시작해야 할 충분한 이유가 있다고 들었습니다. ^) – user8472