토큰 화 된 HTML 문서가 있다고 가정합니다. 어떻게 새 문서로 변환하거나 다른 변환을 적용 할 수 있습니까?HTML 토큰 스트림을 새 문서로 다시 쓰는 방법은 무엇입니까?
예를 들어, 나는이 HTML이 있다고 가정
내가 현재 무엇을 쓸<html>
<body>
<p><a href="/foo">text</a></p>
<p>Hello <span class="green">world</span></p>
</body>
</html>
토큰의 스트림을 출력하는 토크 나이입니다.
TAG_OPEN[html] TAG_OPEN[body] TAG_OPEN[p] TAG_OPEN[a] TAG_ATTRIBUTE[href]
TAG_ATTRIBUTE_VALUE[/foo] TEXT[text] TAG_CLOSE[a] TAG_CLOSE[p]
TAG_OPEN[p] TEXT[Hello] TAG_OPEN[span] TAG_ATTRIBUTE[class]
TAG_ATTRIBUTE_VALUE[green] TEXT[world] TAG_CLOSE[span] TAG_CLOSE[p]
TAG_CLOSE[body] TAG_CLOSE[html]
하지만 지금 내가 약간의 변형을 만들려면이 스트림을 사용할 수있는 방법에 대해 어떤 생각을 가지고 있지 않습니다 그들은 (의사 코드로 작성) 될이 문서하십시오.
예를 들어, TAG_OPEN[a] TAG_ATTRIBUTE[href]
에 TAG_ATTRIBUTE_VALUE[/foo]
을 다시 쓰고 싶습니다.
내가하고 싶은 또 다른 변화는
<a href="/foo">text</a>
일을하기위한 일반적인 전략은 무엇
<a href="/foo">text</a>(/foo)
에 다시 도착, 예를 들어, TAG_ATTRIBUTE[href]
속성 괄호 안에 TAG_OPEN[a]
후에는 출력 할 것입니다 그러한 변형? 모든 태그를 제거하고 TEXT 컨텐츠를 남기거나, 특정 태그 뒤에 태그를 추가하는 등의 다른 많은 변환이 있습니다.
구문 분석 트리를 만들어야합니까? 나는 그것을 한 번도 해본 적이 없으며 토큰 스트림으로부터 파스 트리를 생성하는 방법을 모른다. 아니면 어떻게해야할까요?
모든 의견을 환영합니다.
그리고 한 가지 더 - 저는이 모든 것을 스스로 파싱하여 배우고 싶습니다. 그래서 도서관을 찾고있는 것이 아닙니다! 우리가 HTML을 XML을 준수한다고 가정 할 경우
감사합니다 사전에, Boda의 Cydo
나는 이것들과 같은 변형을하는 법을 배우기를 원합니다! – bodacydo
당신에게 더 많은 힘이 있습니다. 잘못된 도구/패러다임을 사용하여 잘못된 방향으로 가고 있다고 생각하십시오. – brian