숫자 html 제목


0

다음 구조를 포함하는 html 파일이 있습니다.

<h1 class="section">First title</h1>
  <div><h2 class="chapter">Chapter title</h2>
     Chapter text here.
  <div><h2 class="chapter">Chapter title</h2>
     Chapter text here.
  <div><h2 class="chapter">Chapter title</h2>
     Chapter text here.
<h1 class="section">Second title</h1>
  <div><h2 class="chapter">Chapter title</h2>
     Chapter text here.
  <div><h2 class="chapter">Chapter title</h2>
     Chapter text here.
  <div><h2 class="chapter">Chapter title</h2>
     Chapter text here.

다음과 같이 챕터 제목 앞에 숫자를 추가하고 싶습니다.

<h1 class="section">First title</h1>
  <div><h2 class="chapter">1. Chapter title</h2>
     Chapter text here.
  <div><h2 class="chapter">2. Chapter title</h2>
     Chapter text here.
  <div><h2 class="chapter">3. Chapter title</h2>
     Chapter text here.
<h1 class="section">Second title</h1>
  <div><h2 class="chapter">1. Chapter title</h2>
     Chapter text here.
  <div><h2 class="chapter">2. Chapter title</h2>
     Chapter text here.
  <div><h2 class="chapter">3. Chapter title</h2>
     Chapter text here.

헤더에 대해 카운터 재설정, 카운터 증가를 사용하여 CSS를 통해 챕터 번호를 삽입하려고 시도했지만 특정 컨텍스트에서만 작동합니다.

class = "section"을 검색 한 다음 챕터 제목 앞에 숫자를 순차적으로 삽입 할 수있는 스크립트 (python, perl, ???)가 있습니까?

실제 파일의 샘플은 다음과 같습니다.

<body><div class='root'><h1 class="section">Génesis</h1><div><h2
class="chapter">Dios ordena el universo</h2><div>01 En el principio,
cuando Dios creó los cielos y la tierra, </div><div>02 todo era
confusión y no había nada en la tierra. Las tinieblas cubrían los
abismos mientras el espíritu de Dios aleteaba sobre la superficie de
las ag [many lines here] </div><div><h2 class="chapter">Descanso del
séptimo día</h2><div>01 Así estuvieron [many lines here] <div
class='root'><h1 class="section">Éxodo</h1><div><h2 class="chapter">Los
hebreos se multiplican en Egipto</h2><div>01 Estos son los nombres de
los hijos de Israel que llegaron con Jacob a Egipto, cada uno con su
familia:</div><div>02 Rubén, Simeón, Leví, Judá,</div><div>03 Isacar,
[many lines here] etc, etc

답변:


1

편집하다

이제 파일을 보았으므로 문제는 규칙적인 줄 끝이 없다는 것입니다. 실제로 전체 파일이 긴 줄처럼 보입니다. 맞습니까?

내 스크립트는 파일을 한 줄씩 파싱하는 것에 달려 있습니다. 파일의 실제 형식에서는 행이 무작위로 끊어진 것처럼 보이므로 구문 분석하기가 매우 어렵습니다. 당연히 여기에 약간 치열하게 표현되는 것처럼 웅변 적으로 표현 되었 듯이 HTML을 정규 표현식으로 구문 분석해서는 안됩니다.

즉, 아래 스크립트는 게시 한 파일에서 작동합니다.


#!/usr/bin/perl 

my $file=<>; ## Load the file into memory
my $a=1;     ## Set up a counter

## Split the file on each occurence of
## 'class="chapter"' and save into the array @b
my @b=split(/class=.chapter.>/,$file);

## Print the beginning of the file
## and remove it from the array.
print shift(@b);

## Now, go through the array, adding the counter ($a)
## to each chapter heading.
foreach (@b) {
    ## Print 'class="chapter"', the counter and 
    ## the rest of the text until the next chapter heading
    print "class=\"chapter\">$a. $_"; 

    $a++;   ## Increment the counter
    $a=1 if /class="section"/; ## reset the counter
}

나는 그것을 시도했지만 작동하지 않았다. 나는 펄을 모른다. 그러나 내가 조금 이해한다면이 스크립트는 제목에서 "제목"을 찾는다. 위의 "제목 1"및 "제목 2"는 예입니다. 이 <a> 태그의 공통 비트는 제목이 아니라 class = "section"입니다. 위의 예제를 수정하면 도움이 될 수 있습니다.
To Do

@ToDo, 스크립트를 수정했습니다. 지금 작동해야합니다.
terdon

그래도 작동이 안되는. 오류 메시지가 없습니다. 다른 줄의 의미를 설명 할 수 있다면 문제가 없다면 디버깅을 시도 할 수 있습니다.
To Do

@ToDo, 의견이 추가되었습니다. 게시 된 스크립트는 질문의 예에서 작동합니다. 실제 파일 의 발췌 본 입니까? 파일을 게시하지 않으면 형식을 조금만 변경하면 스크립트가 손상되므로 실제 파일을 볼 수 있으면 더 일반적으로 만들 수 있습니다.
terdon

실제 파일의 샘플을 추가했습니다. <a>를 <h1>으로 바꾸면서 파일 구조를 수정했습니다.
To Do

3

<ol>함께 사용할 수 <li>있습니까?

해당 <a>태그 로 무엇을하고 싶은지 잘 모르겠지만 장은 다음과 같이 보일 수 있습니다.

<ol>
  <li class="chapter">Chapter title</li>
  <li class="chapter">Chapter title</li>
  <li class="chapter">Chapter title</li>
</ol>

그리고 모든 새로운 <ol>요소 집합이 번호 매기기를 재설정합니다.


0

CSS는 자동으로 번호를 매기는 데 도움을 줄 수 있습니다.

a { counter-reset: section; }
h2:before {
    counter-increment: section;
    content: counter(section) ". ";
    display: inline;
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.