Sun Java System Portal Server Secure Remote Access 7.2 관리 설명서

언어 기반 규칙 정의

규칙은 다음 언어를 바탕으로 합니다.

HTML 컨텐트에 대한 규칙

웹 페이지의 HTML 컨텐트는 속성, 폼 및 애플릿으로 더욱 세분할 수 있습니다. 이에 따라 HTML 컨텐트에 대한 규칙은 다음과 같이 분류됩니다.

HTML 컨텐트에 대한 속성 규칙

이 규칙은 값을 다시 써야 하는 대상 태그의 속성을 확인합니다. 속성 값은 단순한 URL, JavaScript 또는 DHTML 컨텐트일 수 있습니다. 예:

이 절에서는 다음을 설명합니다.

속성 규칙 구문

<Attribute name="attributeName" [tag="*" valuePatterns="" source=”*” type=”URL|DHTML|DJS”]/>

여기서,

attributeName은 속성의 이름입니다(필수).

tag는 속성이 속하는 태그입니다(옵션, 기본값 *, 모든 태그를 의미).

valuePatterns에 대해서는 규칙에 패턴 매칭 사용을 참조하십시오.

source는 이 속성이 정의되는 페이지의 URI를 지정합니다(옵션, 기본값 * , 모든 페이지를 의미).

type은 값의 유형을 지정합니다(옵션). 다음이 가능합니다.

URL - 단순 URL(기본값)

DHMTL - DHTML 컨텐트. 이런 종류의 컨텐트는 표준 HTML 컨텐트에서 나타나며 Microsoft의 HTC 형식 파일에서 사용됩니다.

DJS - JavaScript 컨텐트. onClick 및 onMouseover와 같은 모든 HTML 이벤트 처리기는 HTML 속성과 연계된 JavaScript를 가지고 있습니다.

속성 규칙 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

http://mymachine.intranet.com/mypage.html

페이지 컨텐트

<a href="http://mymachine.intranet.com/mypage.html">

규칙

<Attribute name="href"/>
or
<Attribute name="href" tag="a"/>

결과

<a href=gateway-URL/http://mymachine.intranet.com/myhome.html>

설명

다시 작성될 URL은 이미 절대 URL이므로 URL의 접두어로는 게이트웨이 URL만 사용됩니다.

DJS 속성 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

http://abc.sesta.com/focus.html

페이지 컨텐트

<Form>

<input TYPE=TEXT SIZE=20 value=focus onClick="Check(\q/focus.html\q,\qfocus\q);return;">

</Form>

규칙

<Attribute name=”onClick” type=”DJS”/>
<Function type="URL" name="Check" paramPatterns="y,"/>

결과

<Form>

<INPUT TYPE=TEXT SIZE=20 value=focus onClick="Check(\q
gateway-URL
/http://abc.sesta.com/focus.html\q,\qfocus\q);return;">

</Form>

설명

지정된 페이지 컨텐트를 다시 쓰기 위해 두 가지 규칙이 필요합니다. 첫 번째 규칙은 onClick JavaScript 토큰을 확인합니다. 두 번째 규칙은 다시 작성되어야 하는 check 함수의 매개 변수를 확인합니다. 이 경우에는 paramPatterns가 첫 번째 매개 변수 자리에 y 값을 갖기 때문에 첫 번째 매개 변수만 다시 작성됩니다.

게이트웨이 URL과 JavaScript 토큰이 나타나는 페이지의 기본 URL이 필요한 매개 변수 앞에 덧붙여집니다.

HTML 컨텐트에 대한 폼 규칙

사용자가 찾아보는 HTML 페이지에는 폼이 있을 수 있습니다. 일부 폼 요소는 URL을 값으로 취할 수 있습니다.

이 절은 다음으로 세분됩니다.

폼 규칙 구문

<Form name="form1" field="visit" [valuePatterns="" source="*"]/>

여기서

name은 폼의 이름입니다(필수).

field는 값을 다시 작성해야 하는 폼의 필드입니다(필수).

valuePatterns에 대해서는 규칙에 패턴 매칭 사용을 참조하십시오.

source는 이 폼 정의가 있는 html 페이지의 URL입니다(옵션, 기본값 *, 모든 페이지를 의미).

폼 규칙 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

http://test.siroe.com/testcases/html/form.html

페이지 컨텐트

페이지 URI가 form.html이고 서버의 루트 디렉토리에 있다고 가정합니다.

<form name=form1  method=POST action=
"http://test.siroe.com/testcases/html/form.html">
<input type=hidden name=abc1 value="0|1234|/test.html">
</form>

form1의 일부인 abc1이라는 이름의 숨겨진 필드 값에 존재하는/text.html을 다시 쓰기 위해 다음 규칙이 필요합니다.

규칙

<Form source="*/form.html" name="form1" 
field="abc1" valuePatterns="0|1234|"/>
<Attribute name="action"/>

결과

<FORM name=”form1” 
method=”POST” action="gateway-URL/
http://test.siroe.com/testcases/html/form.html">
<input type=hidden name=abc1 
value="0|1234|gateway-URL/
http://test.siroe.com/test.html">
</FORM>

설명

action 태그는 정의된 특정 HTML 속성 규칙을 사용하여 다시 작성됩니다.

입력 태그 속성 값의 value는 결과에 나와 있는 것처럼 다시 작성됩니다. 지정된 valuePatterns를 찾고 일치하는 valuePatterns 이후의 모든 컨텐트는 페이지의 기본 URL과 게이트웨이 URL을 앞에 덧붙여 다시 작성됩니다. 규칙에 패턴 매칭 사용을 참조하십시오.

HTML 컨텐트에 대한 애플릿 규칙

단일 웹 페이지에 많은 애플릿이 있을 수 있고 각 애플릿에는 많은 매개 변수가 있을 수 있습니다. Rewriter는 규칙에 지정된 값을 애플릿의 HTML 정의에 대응시키고 애플릿 매개 변수 정의의 일부로 존재하는 URL 값을 수정합니다. 이러한 교체는 사용자가 특정 웹 페이지를 찾아볼 때가 아니라 서버에서 이루어집니다. 이 규칙은 HTML 컨텐트의 개체 태그 및 애플릿 모두에서 매개 변수를 찾아 다시 작성합니다.

이 절은 다음으로 세분됩니다.

애플릿 규칙 구문

<Applet code="ApplicationClassName/ObjectID
" param="parametername" [valuePatterns="" source="*"] />

여기서

code는 애플릿 또는 개체 클래스의 이름입니다(필수).

param은 값을 다시 작성해야 하는 매개 변수의 이름입니다(필수).

valuePatterns에 대해서는 규칙에 패턴 매칭 사용을 참조하십시오.

source는 애플릿 정의가 있는 페이지의 URL입니다(옵션, 기본값 *, 모든 페이지를 의미).

애플릿 규칙 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

http://abc.siroe.com/casestudy/test/HTML/applet/rule1.html

페이지 컨텐트

<applet codebase=”appletcode” code=”
RewriteURLinApplet.class” archive=”/test.jar”>
<param name=Test1 value="/index.html">
</applet>

규칙

<Applet source="*/rule1.html" code=
"RewriteURLin*.class" param="Test*"/>

결과

<APPLET codebase=”gateway-URL
/http://abc.siroe.com/casestudy/test/HTML/
applet/appletcode” code=”RewriteURLinApplet.class”
 archive=”/test.jar”><param name=”Test1” value="
gateway-URL/http:
//abc.siroe.com/index.html">
</APPLET>

설명

<Attribute name="codebase"/>default_gateway_ruleset에서 정의된 규칙이므로 codebase 속성은 다시 작성됩니다.

이름이 Test로 시작되는 모든 매개 변수는 다시 작성됩니다. 애플릿 코드가 표시되는 페이지의 기본 URL과 게이트웨이 URL이 값 param 태그의 value 속성에 접두어로 사용됩니다.

규칙에 패턴 매칭 사용

valuePatterns 필드를 사용하여 패턴 매칭을 수행하고 다시 써야 하는 구문의 특정 부분을 확인할 수 있습니다.

규칙의 일부로 valuePatterns를 지정했다면 매칭된 패턴 이후의 모든 컨텐트는 다시 작성됩니다.

아래 예제 폼 규칙을 생각해 보겠습니다.

<Form source="*/source.html
" name="form1" field="visit
" [valuePatterns="0|1234|"]/>

여기서

source는 폼이 표시되는 html 페이지의 URL입니다.

name은 폼의 이름입니다.

field는 값을 다시 써야 하는 폼의 필드입니다.

valuePatterns는 다시 써야 하는 문자열 부분을 나타냅니다. valuePatterns 뒤에 나타나는 모든 컨텐트는 다시 작성됩니다(옵션, 기본값 ""는 전체 값을 다시 써야 함을 나타냄).

valuePatterns에 특수 문자 지정

특수 문자는 백슬래시로 이스케이프하면 지정할 수 있습니다. 예:

<Form source="*/source.html " name="form1" field=" visit" [valuePatterns="0|1234| \\;original text|changed text”]/>

valuePatterns에서 와일드카드 사용

와일드카드 별표(*) 문자를 사용하여 다시 쓰기 위한 패턴 매칭을 수행할 수 있습니다.

valuePatterns 필드에 단순히 *만 지정할 수는 없습니다. *는 모든 텍스트와 일치함을 나타내기 때문에 valuePattern 뒤에 텍스트가 없습니다. 따라서 Rewriter가 다시 작성할 텍스트가 없습니다. *를 *abc와 같이 다른 문자열과 연결하여 사용해야 합니다. 이 경우에 *abc 이후의 모든 컨텐트가 다시 작성됩니다.


주 –

별표(*)는 규칙의 어떤 필드에서나 와일드카드로 사용할 수 있습니다. 그러나 규칙의 모든 필드에 *를 포함시킬 수는 없습니다. 모든 필드에 *가 있으면 규칙이 무시됩니다. 오류 메시지는 표시되지 않습니다.


원본 명령문에서 여러 필드를 구별하기 위해 표시되는 구분 문자(세미콜론 또는 쉼표)와 함께 * 또는 **를 사용할 수 있습니다. 하나의 별표(*)는 다시 작성되지 않을 모든 필드와 매칭되며 두 개의 별표(**)는 다시 작성해야 하는 모든 필드와 매칭됩니다.

valuePatterns에서 와일드카드 사용에는 * 와일드카드 사용에 대한 몇 가지 예제가 나와 있습니다.

표 4–1 * 와일드카드 사용의 실례

URL 

valuePatterns 

설명 

url1, url2, url3, url4

valuePatterns = "**, *, **, *"

**가 다시 작성해야 하는 부분을 나타내기 때문에 url1url3이 다시 작성됩니다.

XYZABChttp://host1.sesta.com/dir1.html

valuePatterns = "*ABC"

http://host1.sesta.com/dir1.html 부분만 다시 작성됩니다. *ABC 이후의 모든 부분을 다시 작성해야 합니다.

"0|dir1|dir2|dir3|dir4|test|url1

valuePatterns = "*|*|**|*|**|*|"

dir2, dir4url1이 다시 작성됩니다. 다시 작성해야 하는 마지막 필드는 **를 사용하여 나타내지 않아도 됩니다.

JavaScript 컨텐트에 대한 규칙

JavaScript에는 다양한 위치에 URL이 있을 수 있습니다. Rewriter는 JavaScript를 직접 구문 분석하여 URL 부분을 확인할 수 없습니다. 특별한 규칙 집합을 작성하여 JavaScript 처리기가 URL을 확인하여 변환하도록 합니다.

URL 유형을 가진 JavaScript 요소는 다음으로 분류됩니다.

변수

변수의 일반 구문은 다음과 같습니다.

<Variable name="variableName" [type="URL|EXPRESSION|DHTML|DJS|SYSTEM" source="*"]>

JavaScript 변수는 가지고 있는 값의 유형에 따라 5가지 범주로 더욱 세분할 수 있습니다.

URL 변수

변수 값은 URL로 취급할 수 있는 단순한 문자열입니다.

이 절은 다음으로 세분됩니다.

URL 변수 구문

<Variable name="variableName" type="URL" [source="*"]>

여기서

variableName은 변수의 이름입니다. variableName의 값은 다시 작성됩니다(필수).

type은 URL 변수입니다(필수, 이 값은 URL이어야 함).

source는 이 JavaScript 변수가 발견되는 페이지의 URI입니다(옵션, 기본값 *는 모든 페이지를 의미).

URL 변수 예제

기본 URL이 다음과 같다고 가정합니다.

http://abc.siroe.com/tmp/page.html

페이지 컨텐트

<script LANGUAGE="Javascript">
<!--
//URL Variables
var imgsrc1="/tmp/tmp.jpg";
var imgsrc2="http://srap.sesta.com/tmp/tmp.jpg";
var imgsrc3=imgsrc2;
//-->
</SCRIPT>

규칙

<Variable name=”imgsrc*” type="URL"/>

결과

<script LANGUAGE="Javascript">
<!--
//URL Variables
var imgsrc="gateway-URL/http://abc.siroe.com/tmp/tmp.jpg";
var imgsrc="gateway-URL/http://srap.sesta.com/tmp/tmp.jpg";
var imgsrc3=imgsrc2;
//-->
</SCRIPT>

설명

유형이 URL이고 이름이 imgsrc로 시작되는 모든 변수가 다시 작성됩니다. 결과의 첫 라인에서 게이트웨이 URL과 변수가 표시되는 페이지의 기본 URL이 앞에 덧붙습니다. 두 번째 라인에는 이미 절대 경로가 있기 때문에 게이트웨이 URL만 덧붙습니다. 세 번째 var imagsrc2는 그 값이 문자열이 아니라 다른 JavaScript 값이기 때문에 다시 작성되지 않습니다.

EXPRESSION 변수

Expression 변수에는 오른쪽에 표현식이 있습니다. 이 표현식의 결과는 URL입니다. Rewriter는 서버에서 이러한 표현식을 평가할 수 없기 때문에 HTML 페이지에 JavaScript 함수(psSRAPRewriter_convert_expression)를 추가합니다. 이 함수는 표현식을 하나의 매개 변수로 받아들여 클라이언트 브라우저에서 필요한 URL로 평가합니다.

명령문에 단순 URL이 있는지 EXPRESSION URL이 있는지 잘 모르는 경우에는 두 시나리오를 모두 처리할 수 있는 EXPRESSION 규칙을 사용하십시오.

이 절은 다음으로 세분됩니다.

EXPRESSION 변수 구문

<Variable name="variableName" [type="EXPRESSION" source="*"]/>

여기서

variableName은 그 값이 표현식인 JavaScript 변수의 이름입니다(필수).

type은 JavaScript 변수의 유형입니다(옵션, 기본값은 EXPRESSION).

source는 페이지의 URI입니다(옵션, 기본값 *, 모든 소스를 의미)

EXPRESSION 변수 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

http://abc.siroe.com/dir1/dir2/page.html

페이지 컨텐트

<script LANGUAGE="Javascript">
<!--
//Expression variables
var expvar= getURIPreFix() + "../../images/graphics"+".gif";
document.write("<A HREF="+expvar+">Link to XYZ content</A><P>")
var expvar="../../images/graphics"+".gif";
//-->
</SCRIPT>

규칙

<Variable name=”expvar” type="EXPRESSION"/>
or
<Variable name=”expvar”/>

결과

var expvar=psSRAPRewriter_convert_expression(getURIPreFix()
 + "../../images/graphics"+".gif");document.write("<a href="+expvar+">>
Link to XYZ content</A><P>")var expvar=”gateway-URL/http://abc.siroe.com/images/graphics"+".gif";

설명

첫 번째 줄에서 함수 psSRAPRewriter_convert_expressionexpvar 표현식 변수의 오른쪽에 덧붙여집니다. 이 함수는 표현식을 처리하고 런타임에 컨텐트를 다시 작성합니다. 세 번째 라인에서 값이 단순 URL로 다시 작성됩니다.

DHTML(Dynamic HTML) 변수

이것은 HTML 컨텐트를 포함한 JavaScript 변수입니다.

이 절은 다음으로 세분됩니다.

DHTML 구문

<Variable name="variableName" type="DHTML" [source="*"]/>

여기서

variableName은 DHTML 컨텐트가 있는 JavaScript 변수의 이름입니다(필수).

type은 변수의 유형입니다(필수, 이 값은 DHTML이어야 함).

source는 페이지의 URL입니다(옵션, 기본값은 *, 모든 페이지를 의미).

DHTML 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

http://abc.sesta.com/graphics/set1/
graphics/jsscript/JSVAR/page.html

페이지 컨텐트

<script LANGUAGE="Javascript">
<!--
//DHTML Var
var dhtmlVar="<a href=../../images/test.html>"
var dhtmlVar="<a href=/images/test.html>"
var dhtmlVar="<a href=images/test.html>"
//-->
</SCRIPT>

규칙

<Variable name=”dhtmlVar” type="DHTML"/>
<Attribute name="href"/>
or
<Attribute name="href" tag="a"/>

결과

<script LANGUAGE="Javascript">
<!--
//DHTML Var
var dhtmlVar="<a href=gateway-URL
/http://abc.sesta.com/graphics/
set1/graphics/images/test.html>"
var dhtmlVar="<a href=gateway-URL/
http
://abc.sesta.com/images/test.html>"
var dhtmlVar="<a href=gateway-URL/
http://abc.sesta.com/graphics/set1/
graphics/jscript/JSVAR/images/test.html>"
//--></SCRIPT>

설명

JavaScript 구문 분석기는 dhtmlVar의 값을 HTML 컨텐트로 읽고 이 컨텐트를 HTML 구문 분석기로 보냅니다. HTML 구문 분석기가 href 속성 규칙이 대응된 HTML 규칙을 적용하기 때문에 URL이 다시 작성됩니다.

DJS(Dynamic JavaScript) 변수

이것은 JavaScript 컨텐트를 포함한 JavaScript 변수입니다.

이 절은 다음으로 세분됩니다.

DJS 구문

<Variable name="variableName" type="DJS" [source="*"]/>

여기서

variable은 그 값이 javascript인 JavaScript 변수입니다.

DJS 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

http://abc.sesta.com/dir1/dir2/dir3/jscript/dir4/page.html

페이지 컨텐트

//DJS Var
var dJSVar="var dJSimgsrc=\q/tmp/tmp.jpg\q;"
var dJSVar="var dJSimgsrc=\q../tmp/tmp.jpg\q;"
var dJSVar="var dJSimgsrc=
\qhttp://abc.sesta.com/tmp/tmp.jpg\q;"

규칙

<Variable name="DJS">dJSVar/>
<Variable name="URL">dJSimgsrc/>

결과

//DJS Var - need 2 rules
var dJSVar="var dJSimgsrc=\qgateway-URL
/http://abc.sesta.com/tmp/tmp.jpg\q;"var dJSVar="var dJSimgsrc=\q
gateway-URL/http
://abc.sesta.com/dir1/dir2/dir3/jscript/tmp/tmp.jpg\q;"
var dJSVar="var dJSimgsrc=\qgateway-URL/
http://abc.sesta.com/tmp/tmp.jpg\q;"

설명

여기에 두 가지 규칙이 필요합니다. 첫 번째 규칙은 동적 JavaScript 변수 dJSVar을 찾습니다. 이 변수의 값은 다시 URL 유형의 JavaScript입니다. 이 JavaScript 변수의 값을 다시 쓰기 위해 두 번째 규칙이 적용됩니다.

SYSTEM 변수

사용자가 사용하지 못하도록 선언되어 있어 지원이 제한되는 변수입니다. 이 변수들은 JavaScript 표준의 일부로 사용할 수 있습니다. 예: window.location.pathname

이 절은 다음으로 세분됩니다.

SYSTEM 변수 구문

<Variable name="variableName" type="SYSTEM" [source="*"]/>

여기서

variableName은 JavaScript 시스템 변수입니다. 필수이며 값은document.URL, document.domain, location, doument.location, location.pathname, location.href, location.protocol, location.hostname, location.host 및 location.port 등의 패턴과 일치하는 변수일 수 있습니다. 이러한 값은 generic_ruleset에 있습니다. 이러한 시스템 변수 규칙을 수정하지 마십시오.

type은 시스템 유형 값을 지정합니다(필수이며 값은 DJS임).

source는 이 페이지의 URI입니다(옵션, 기본값 *는 모든 페이지를 의미).

SYSTEM 변수 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

http://abc.siroe.com/dir1/page.html

페이지 컨텐트

<script LANGUAGE="Javascript">
<!--
//SYSTEM Var
alert(window.location.pathname);
//-->
</SCRIPT>

규칙

<Variable name=”window.location.pathname” type="SYSTEM"/>

결과

</SCRIPT>
<SCRIPT LANGUAGE="Javascript">
<!--
//SYSTEM Var
alert(psSRAPRewriter_convert_pathname(window.location.pathname));
//-->
</SCRIPT>

설명

Rewriter가 규칙에 대응되는 시스템 변수를 찾으면 psSRAPRewriter_convert_system 함수가 접두어로 사용됩니다. 이 함수는 런타임 때 시스템 변수를 처리하고 그에 따라 얻어지는 URL을 다시 씁니다.

함수의 인수

그 값을 다시 작성해야 하는 함수 매개 변수는 4가지 범주로 분류됩니다.

일반 구문

<Function name="functionName " paramPatterns="y,y," [type="URL|EXPRESSION|DHTML|DJS" source=”*”]/>

여기서

name은 JavaScript 함수의 이름입니다(필수).

paramPatterns는 다시 작성해야 하는 매개 변수를 지정합니다(필수).

y. y의 위치는 다시 작성해야 하는 매개 변수를 나타냅니다. 예를 들어 구문에서 첫 번째 매개 변수는 다시 써야 하지만 두 번째 매개 변수는 다시 쓰지 않아야 합니다.

type은 이 매개 변수에 필요한 값의 종류를 지정합니다(옵션, 기본값은 EXPRESSION 유형).

source는 페이지의 소스 URI입니다(옵션, 기본값은 *, 모든 페이지를 의미).

URL 매개 변수

함수는 이 매개 변수를 문자열로 취하며 이 문자열은 URL로 취급할 수 있습니다.

이 절은 다음으로 세분됩니다.

URL 매개 변수 구문

<Function name="functionName" paramPatterns="y,," type="URL" [source=”*”]/>

여기서

name은 URL 유형의 매개 변수를 갖는 함수 이름입니다(필수).

paramPatterns는 다시 작성해야 하는 매개 변수를 지정합니다(필수).

y. y의 위치는 다시 작성해야 하는 매개 변수를 나타냅니다. 예를 들어 구문에서 첫 번째 매개 변수는 다시 써야 하지만 두 번째 매개 변수는 다시 쓰지 않아야 합니다.

type은 함수의 유형입니다(필수, 이 값은 URL이어야 함).

source는 이 함수 호출을 갖는 페이지의 URL입니다(옵션, 기본값은 *, 모든 URL을 의미).

URL 매개 변수 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

http://abc.sesta.com/test/rewriter/test1/jscript/test2/page.html

페이지 컨텐트

<script language="JavaScript">
<!--
function test(one,two,three){
alert(one + "##" + two + "##" +three);
}
test("/test.html","../test.html","123");
window.open("/index.html","gen",width=500,height=500);
//-->
</SCRIPT>

규칙

<Function name="URL" name="test" paramPatterns="y,y,"/>
<Function name="URL" name="window.open" paramPatterns="y,,,"/>

결과

<SCRIPT language="JavaScript">
<!--
function test(one,two,three) {
alert(one + "##" + two + "##" +three);
}
test("gateway-URL/http://abc.sesta.com/test.html","
gateway-URL/http://abc.sesta.com/test/rewriter/
test1/jscript/test.html","123");window.open("gateway-URL/
http://abc.sesta.com/index.html","gen",width=500,height=500);
//-->
</SCRIPT>

설명

첫 번째 규칙은 test 이름의 함수에 있는 처음 두 매개 변수를 다시 작성해야 한다고 지정합니다. 따라서 test 함수의 처음 두 매개 변수는 다시 작성됩니다. 두 번째 규칙은window.open 함수의 처음 매개 변수를 다시 작성해야 한다고 지정합니다. window.open 함수 내의 URL에는 이 함수 매개 변수를 포함한 페이지의 기본 URL과 게이트웨이 URL이 앞에 덧붙여집니다.

EXPRESSION 매개 변수

이 매개 변수는 표현식 값을 취하며 평가 결과는 URL이 됩니다.

이 절은 다음으로 세분됩니다.

EXPRESSION 매개 변수 구문

<Function name="functionName" paramPatterns="y" [type="EXPRESSION" source=”*”]/>

여기서

name은 함수의 이름입니다(필수).

paramPatterns는 다시 작성해야 하는 매개 변수를 지정합니다(필수).

y. y의 위치는 다시 작성해야 하는 매개 변수를 나타냅니다. 위의 구문에서 첫 번째 매개 변수만 다시 작성됩니다.

type은 값 EXPRESSION을 지정합니다(옵션).

source는 이 함수가 호출되는 페이지의 URI입니다.

EXPRESSION 매개 변수 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

http://abc.sesta.com/dir1/dir2/page.html

페이지 컨텐트

<script language="JavaScript">
<!--
function jstest2(){
return ".html";
}
function jstest1(one){
return one;
}
var dir="/images/test"
var test1=jstest1(dir+"/test"+jstest2());
document.write("<a HREF="+test1+">TEST</a>");
alert(test1);
//-->
</SCRIPT>

규칙

<Function type="EXPRESSION" name="jstest1" paramPatterns="y"/>
or
<Function name="jstest1" paramPatterns="y"/>

결과

<script language="JavaScript">
<!--
function jstest2(){
return ".html";
}
function jstest1(one){
return one;
}
var dir="/images/test"
var test1=jstest1(psSRAPRewriter_convert_expression(dir+"/test"+jstest2()));
document.write("<a HREF="+test1+">TEST</a>");
alert(test1);
//-->
</SCRIPT>

설명

이 규칙은 jstest1 함수의 첫 번째 매개 변수를 EXPRESSION 함수 매개 변수로 취급하여 다시 써야 한다는 것을 지정합니다. 예제 페이지 컨텐트에서 첫 번째 매개 변수는 런타임 때만 평가되는 표현식입니다. Rewriter는 이 표현식에 psSRAPRewriter_convert_expression 함수로 접두어를 붙입니다. 이 표현식이 평가되고 psSRAPRewriter_convert_expression 함수가 런타임 시 결과를 다시 씁니다.


주 –

위의 예제에서 JavaScript 변수 규칙의 일부로 test1 변수가 있을 필요는 없습니다. jstest1에 대한 함수 규칙이 다시 쓰기를 처리합니다.


DHTML 매개 변수

그 값이 HTML인 함수 매개 변수입니다.

HTML 페이지를 동적으로 생성하는 document.write() 같은 원시 JavaScript 메소드가 이 범주에 속합니다.

이 절은 다음으로 세분됩니다.

DHTML 매개 변수 구문

<Function name="functionName" paramPatterns="y" type="DHTML" [source=”*”]/>

여기서

name은 함수의 이름입니다.

paramPatterns는 다시 작성해야 하는 매개 변수를 지정합니다(필수).

y. y의 위치는 다시 작성해야 하는 매개 변수를 나타냅니다. 위의 구문에서 첫 번째 매개 변수만 다시 작성됩니다.

DHTML 매개 변수 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

http://xyz.siroe.com/test/rewriter/test1/jscript/JSFUNC/page.html

페이지 컨텐트

<script>
<!--
document.write(\q<a href="/index.html">write</a><BR>\q)
document.writeln(\q<a href="index.html">writeln</a><BR>\q)
document.write("http://abc.sesta.com/index.html<BR>")
document.writeln("http://abc.sesta.com/index.html<BR>")
//-->
</SCRIPT>

규칙

<Function name="DHTML" name="document.write" paramPatterns="y"/>
<Function name="DHTML" name="document.writeln" paramPatterns="y"/>
<Attribute name="href"/>

결과

<SCRIPT>
<!--
document.write(\q<a href="gateway-URL/
http://xyz.siroe.com/index.html">write</a><BR>\q)
document.writeln(\q<a href="gateway-URL/
http://xyz.siroe.com/test/rewriter/test1/
jscript/JSFUNC/index.html">writeln</a><BR>\q)
document.write("http://abc.sesta.com/index.html<BR>")
document.writeln("http://abc.sesta.com/index.html<BR>")
//-->
</SCRIPT>

설명

첫 번째 규칙은 document.write 함수의 첫 번째 매개 변수를 다시 작성해야 한다고 지정합니다. 두 번째 규칙은 document.writeln 함수의 첫 번째 매개 변수를 다시 작성해야 한다고 지정합니다. 세 번째 규칙은 href 이름의 모든 속성을 다시 작성해야 한다고 지정하는 단순 HTML 규칙입니다. 이 예에서, DHTML 매개 변수 규칙이 함수에서 다시 작성해야 하는 매개 변수를 확인합니다. 그런 다음 HTML 속성 규칙이 적용되어 실제로 확인된 매개 변수가 다시 작성됩니다.

DJS 매개 변수

그 값이 JavaScript인 함수 매개 변수입니다.

이 절은 다음으로 세분됩니다.

DJS 매개 변수 구문

<Function name="functionName" paramPatterns="y" type="DJS" [source=”*”]/>

여기서

name은 하나의 매개 변수가 DJS인 함수의 이름입니다(필수).

paramPatterns는 위 함수에서 어떤 매개 변수가 DJS인지를 지정합니다(필수).

y. y의 위치는 다시 작성해야 하는 매개 변수를 나타냅니다. 위의 구문에서 첫 번째 매개 변수만 다시 작성됩니다.

type은 DJS입니다(필수).

source는 페이지의 URI입니다(옵션, 기본값은 *, 모든 URI를 의미).

DJS 매개 변수 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

http://abc.sesta.com/page.html

페이지 컨텐트

<script>
menu.addItem(new NavBarMenuItem("All Available Information","JavaScript:top.location=\qhttp://abc.sesta.com\q"));
</script>

규칙

<Function name="DJS" name="NavBarMenuItem" paramPatterns=",y"/>
<Variable name="URL">top.location</Variable>

결과

<script>
menu.addItem(new NavBarMenuItem("All Available Information",
"JavaScript:top.location=\qgateway-URL/
http://abc.sesta.com\q"));
</script>

설명

첫 번째 규칙은 JavaScript를 포함한 NavBarMenuItem 함수의 두 번째 매개 변수를 다시 작성해야 한다고 지정합니다. JavaScript 내에서 top.location 변수도 다시 작성해야 합니다. 이 변수는 두 번째 규칙을 사용하여 다시 작성됩니다.

XML 컨텐트에 대한 규칙

웹 페이지에 XML 컨텐트가 있을 수 있으며 여기에는 다시 URL이 있을 수 있습니다. 다시 작성해야 하는 XML 컨텐트는 두 범주로 구분됩니다.

태그 텍스트

이 규칙은 태그 요소의 PCDATA 또는 CDATA를 다시 작성하기 위한 것입니다.

이 절은 다음으로 세분됩니다.

태그 텍스트 구문

<TagText tag="tagName" 
[attributePatterns=”attribute_patterns_for_ this_tag" source=”*”]/>

여기서

tagName은 태그의 이름입니다.

attributePatterns는 이 태그에 대한 속성 및 그 값의 패턴입니다(옵션, 이 태그에 속성이 전혀 없다는 것을 의미).

source는 이 xml 파일의 URI입니다(옵션, 기본값은 *, 모든 xml 페이지를 의미).

태그 텍스트 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

http://abc.sesta.com/test/rewriter/test1/xml/page.html

페이지 컨텐트

<xml>
<Attribute name="src">test.html</attribute>
<attribute>abc.html</attribute>
</xml>

규칙

<TagText tag="attribute" attributePatterns="name=src"/>

결과

<xml>
<Attribute name="src">gateway-URL/
http://abc.sesta.com/test/rewriter/test1/
xml/test.html</attribute><attribute>abc.html</attribute>
</xml>

설명

페이지 컨텐트의 첫 번째 행에는 속성 예제가 있습니다. 페이지 컨텐트의 두 번째 행에 name이라는 속성이 없는데 name 속성의 값이 src여야 하기 때문에 다시 작성하는 작업은 수행되지 않습니다. 이것도 다시 작성하려면 <TagText tag="attribute"/>가 있어야 합니다.

속성

XML 속성의 규칙은 HTML에 대한 속성 규칙과 유사합니다. XML의 속성 규칙이 대소문자를 구분하는 반면 HTML 속성은 그렇지 않다는 차이점이 있습니다. 이는 근본적으로 HTML에는 없지만 XML에는 있는 대소문자 구분 특성 때문입니다.

Rewriter는 속성 이름을 바탕으로 속성 값을 변환합니다.

이 절은 다음으로 세분됩니다.

속성 구문

<Attribute name="attributeName " [tag="*" type=”URL” valuePatterns="*" source=”*”]/>

여기서

attributeName은 속성의 이름입니다(필수).

tag는 이 속성이 있는 태그의 이름입니다(옵션, 기본값은 *, 모든 태그를 의미).

valuePatterns에 대해서는 규칙에 패턴 매칭 사용을 참조하십시오.

source는 이 XML 페이지의 URI입니다(옵션, 기본값은 *, 모든 XML 페이지를 의미).

속성 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

http://abc.sesta.com/test/rewriter/test1/xml/page.html

페이지 컨텐트

<xml>
<baseroot href="/root.html"/>
<img href="image.html"/>
<string href="1234|substring.html"/>
<check href="1234|string.html"/>
</xml>

규칙

<Attribute name="href"tag="check" valuePatterns="1234|"/>

결과

<xml>
<baseroot href="/root.html"/><img href="image.html"/>
<string href="1234|substring.html"/><check href="1234|
gateway-URL
/http://abc.sesta.com/test/rewriter/test1/xml/string.html"/></xml>

설명

위의 예에서 네 번째 라인만 규칙에 지정된 모든 조건을 만족하기 때문에 이 라인만 다시 작성됩니다. 규칙에 패턴 매칭 사용을 참조하십시오.

CSS(Cascading Style Sheet)에 대한 규칙

HTML 페이지에서 CSS(CSS2 포함)가 변환됩니다. URL이 CSS의 가져오기 구문과 url() 함수에만 있기 때문에 이 변환에 대해 정의된 규칙은 없습니다.

WML에 대한 규칙

WML은 HTML과 유사하므로 WML 컨텐트에 HTML 규칙이 적용됩니다.WML 컨텐트에 일반 규칙 집합을 사용하십시오. HTML 컨텐트에 대한 규칙을 참조하십시오.

재귀적 기능 사용

Rewriter에서는 재귀적 기능을 사용하여 대응되는 문자열 패턴의 끝까지에서 같은 패턴을 검색합니다.

예를 들어 Rewriter에서 다음 문자열을 구문 분석하는 경우

<a href="src=abc.jpg,src=bcd.jpg,src=xyz.jpg>

규칙

<Attribute name="href" valuePatterns="*src=**"/>

은 처음 나타나는 패턴만을 다시 작성하며 그 결과는 다음과 같습니다.

<a href="src=http://jane.sun.com/abc.jpg>

하지만 재귀적 옵션을 사용하면

<Attribute name="href" valuePatterns="REC:*src=**"/>;

Rewriter는 대응되는 문자열 패턴에서 끝까지 같은 패턴을 찾기 때문에 다음과 같은 출력을 얻게 됩니다.

<a href="src=http://jane.sun.com/abc.jpg,src= http://jane.sun.com/bcd.jpg,src=http://jane.sun.com/xyz.jpg>