Closed gathogojr closed 10 months ago
You could check the following instances of absolute URLs and confirm whether they've been retained as such intentionally:
The file _posts/2010-04-13-odata-weekly-roundup-2.html
contains the following link with an absolute URL:
<a href="https://www.odata.org/media/6652/%5bmc-csdl%5d%5b1%5d.htm#_Toc246717571">
_posts/2010-05-12-odata-roadshow.html
contains the following link:
<a href="https://www.odata.org/RoadShowRegistration">Register here</a>
pages/odata-icon-usage-guidelines.html
contains the following link:
<a href="https://www.odata.org/ ">https://www.odata.org/ </a>
pages/documentation/atom-format-v3.html
contains the following link:
<a href="https://www.odata.org/OData.html#canonicalurl">Canonical URL</a>
pages/documentation/batch-processing-v3.html
:
[<a href="https://www.odata.org/media/30002/json">OData:JSON</a>]
pages/documentation/odata-version-3-0-core-protocol.hml
:
<a href="https://www.odata.org/media/30002/ODataAtomPayload">Atom Payload</a>
pages/documentation/overview.html
:
<a href="https://www.odata.org/media/16348/[mc-csdl].pdf">[CSDL]</a>
<a href="https://www.odata.org/media/16343/[mc-edmx].pdf">[EDMX]</a>
pages/documentation/terminology.html
:
[<a href="https://www.odata.org/media/6652/[mc-csdl][1].htm">CDSL</a>]
pages/documentation/uri-conventions.html
:
<a href="https://www.odata.org/media/6655/[mc-apdsu][1].htm">normative OData specification</a>
_posts/2010-03-26-odata-weekly-roundup-1.html
:
<a href="http://odata.org/feedback">feedback</a>
2010-06-01-odata-workshops-in-raleigh-charlotte-atlanta-chicago-and-nyc.html
:
<a href="http://odata.org/roadshow">OData Roadshow</a>
2010-08-06-enhancing-odata-support-for-querying-derived-types-revisited.html
:
<a href="http://odata.org/mailing-list">OData Mailing list</a>
_posts/2011-03-16-reference-data-caching.html
:
<strong><link rel="http://odata.org/delta" href="http://</strong> <strong>conferenceorganization/v1/</strong> <strong>sessions/?$deltatoken=B:405973881944444416</strong><strong>"/><br />
posts/2013-08-28-odataquerybuilder-a-cross-browser-javascript-library-for-building-odata-queries.html
:
<a href="http://odata.org">http://odata.org</a>
pages/documentation/atom-format-v3.html
:
<p>For example; the following specifies a value of “Home” for the “PhoneNumberType” ValueTerm applied to the “PhoneNumber” property of a customer:</p>
{% highlight xml %}<code> <metadata:properties xmlns:contact="http://odata.org/vocabularies/contact/v1">
<p>For example; the following specifies the “StreetAddress”, “City”, “Region”, “Country” and “Postal Code” properties of an “Address” TypeTerm applied to a customer entity:</p>
{% highlight xml %}<code> <metadata:properties xmlns:contact="http://odata.org/vocabularies/contact/v1">
pages/documentation/common-schema-definition-language-csdl.html
:
{% highlight xml %}<?xml version="1.0" encoding="UTF-8" standalone="true"?>
<edmx:Edmx xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx" Version="1.0">
<edmx:AnnotationsReference Url="http://odata.org/ann/a">
<edmx:Include />
</edmx:AnnotationsReference>
<edmx:AnnotationsReference Url="http://odata.org/ann/b">
<edmx:Include TermNamespace="org.example.validation" />
<edmx:Include TermNamespace="org.example.display" Qualifier="Slate" />
</edmx:AnnotationsReference>
<edmx:DataServices ...>
</edmx:Edmx>
{% endhighlight %}
<p>All annotations from <code>http://odata.org/ann/a</code> are included. For <code>http://odata.org/ann/b</code>, only the following annotations are included:</p>
_posts/2011-02-21-vocabularies.html
:
<p>Then this 'free floating' element is 'annotating' the Email property using the 'http://odata.org/vocabularies/constraints' vocabulary:</p>
<p><em><Annotation AppliesTo="http://server/service/$metadata/Properties('Namespace.Person.Email')"<br />
xmlns:validation="http://odata.org/vocabularies/constraints"><br />
<validation:Constraint m:Type="validation:Constraint" ><br />
<validation:Regex>^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,6}$.</validation:Regex><br />
<validation:ErrorMessage>Please enter a valid EmailAddress</validation:ErrorMessage><br />
</validation:Constraint><br />
</Annotation></em></p>
<p>Annotation by reference also neatly sidesteps issue (3), i.e. the object annotated is left structurally unchanged, which means we could use a similar approach to annotate data without breaking code (like a javascript path) that relies on a particular structure.</p>
<p>Another nice side-effect of this design is that you can use it 'inside' the CSDL too, simply by removing the address of the metadata service from the AppliesTo url - since we are in the CSDL we can us 'relative addressing':</p>
<p><em><Annotation AppliesTo="Properties('Namespace.Person.Email')"<br />
xmlns:validation="http://odata.org/vocabularies/constraints"><br />
<validation:Constraint m:Type="validation:Constraint" ><br />
<validation:Regex>^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,6}$.</validation:Regex><br />
<validation:ErrorMessage>Please enter a valid EmailAddress</validation:ErrorMessage><br />
</validation:Constraint><br />
</Annotation></em></p>
<p>Indeed if you have a separate file with many annotations for a particular model, you could group a series of annotations together like this:</p>
<p><em><Annotations AppliesTo="http://server/service/$metadata/"><br />
<Annotation AppliesTo="Properties('Namespace.Person.Email')"<br />
xmlns:validation="http://odata.org/vocabularies/constraints"><br />
<validation:Constraint m:Type="validation:Constraint" ><br />
<validation:Regex>^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,6}$.</validation:Regex><br />
<validation:ErrorMessage>Please enter a valid EmailAddress</validation:ErrorMessage><br />
</validation:Constraint><br />
</Annotation><br />
<Annotation AppliesTo="Properties('Namespace.Customer.Email')"<br />
xmlns:validation="http://odata.org/vocabularies/constraints"><br />
<validation:Constraint m:Type="validation:Constraint" ><br />
<validation:Regex>^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,6}$.</validation:Regex><br />
<validation:ErrorMessage>Please enter a valid EmailAddress</validation:ErrorMessage><br />
</validation:Constraint><br />
</Annotation><br />
</Annotations></em></p>
@KenitoInc @habbes I came across the following dead links referencing odata.org when working on this PR:
I left the above links as they were. There was no sense in converting them into relative URLs if that too would result into 404s. I also didn't have a valid alternative I could change them to.
You could check the following instances of absolute URLs and confirm whether they've been retained as such intentionally:
- The file
_posts/2010-04-13-odata-weekly-roundup-2.html
contains the following link with an absolute URL:<a href="https://www.odata.org/media/6652/%5bmc-csdl%5d%5b1%5d.htm#_Toc246717571">
_posts/2010-05-12-odata-roadshow.html
contains the following link:<a href="https://www.odata.org/RoadShowRegistration">Register here</a>
pages/odata-icon-usage-guidelines.html
contains the following link:<a href="https://www.odata.org/ ">https://www.odata.org/ </a>
pages/documentation/atom-format-v3.html
contains the following link:<a href="https://www.odata.org/OData.html#canonicalurl">Canonical URL</a>
pages/documentation/batch-processing-v3.html
:[<a href="https://www.odata.org/media/30002/json">OData:JSON</a>]
pages/documentation/odata-version-3-0-core-protocol.hml
:<a href="https://www.odata.org/media/30002/ODataAtomPayload">Atom Payload</a>
pages/documentation/overview.html
:<a href="https://www.odata.org/media/16348/[mc-csdl].pdf">[CSDL]</a>
<a href="https://www.odata.org/media/16343/[mc-edmx].pdf">[EDMX]</a>
pages/documentation/terminology.html
:[<a href="https://www.odata.org/media/6652/[mc-csdl][1].htm">CDSL</a>]
pages/documentation/uri-conventions.html
:<a href="https://www.odata.org/media/6655/[mc-apdsu][1].htm">normative OData specification</a>
_posts/2010-03-26-odata-weekly-roundup-1.html
:<a href="http://odata.org/feedback">feedback</a>
2010-06-01-odata-workshops-in-raleigh-charlotte-atlanta-chicago-and-nyc.html
:<a href="http://odata.org/roadshow">OData Roadshow</a>
2010-08-06-enhancing-odata-support-for-querying-derived-types-revisited.html
:<a href="http://odata.org/mailing-list">OData Mailing list</a>
_posts/2011-03-16-reference-data-caching.html
:<strong><link rel="http://odata.org/delta" href="http://</strong> <strong>conferenceorganization/v1/</strong> <strong>sessions/?$deltatoken=B:405973881944444416</strong><strong>"/><br />
posts/2013-08-28-odataquerybuilder-a-cross-browser-javascript-library-for-building-odata-queries.html
:<a href="http://odata.org">http://odata.org</a>
pages/documentation/atom-format-v3.html
:<p>For example; the following specifies a value of “Home” for the “PhoneNumberType” ValueTerm applied to the “PhoneNumber” property of a customer:</p> {% highlight xml %}<code> <metadata:properties xmlns:contact="http://odata.org/vocabularies/contact/v1">
<p>For example; the following specifies the “StreetAddress”, “City”, “Region”, “Country” and “Postal Code” properties of an “Address” TypeTerm applied to a customer entity:</p> {% highlight xml %}<code> <metadata:properties xmlns:contact="http://odata.org/vocabularies/contact/v1">
pages/documentation/common-schema-definition-language-csdl.html
:{% highlight xml %}<?xml version="1.0" encoding="UTF-8" standalone="true"?> <edmx:Edmx xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx" Version="1.0"> <edmx:AnnotationsReference Url="http://odata.org/ann/a"> <edmx:Include /> </edmx:AnnotationsReference> <edmx:AnnotationsReference Url="http://odata.org/ann/b"> <edmx:Include TermNamespace="org.example.validation" /> <edmx:Include TermNamespace="org.example.display" Qualifier="Slate" /> </edmx:AnnotationsReference> <edmx:DataServices ...> </edmx:Edmx> {% endhighlight %} <p>All annotations from <code>http://odata.org/ann/a</code> are included. For <code>http://odata.org/ann/b</code>, only the following annotations are included:</p>
_posts/2011-02-21-vocabularies.html
:<p>Then this 'free floating' element is 'annotating' the Email property using the 'http://odata.org/vocabularies/constraints' vocabulary:</p> <p><em><Annotation AppliesTo="http://server/service/$metadata/Properties('Namespace.Person.Email')"<br /> xmlns:validation="http://odata.org/vocabularies/constraints"><br /> <validation:Constraint m:Type="validation:Constraint" ><br /> <validation:Regex>^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,6}$.</validation:Regex><br /> <validation:ErrorMessage>Please enter a valid EmailAddress</validation:ErrorMessage><br /> </validation:Constraint><br /> </Annotation></em></p> <p>Annotation by reference also neatly sidesteps issue (3), i.e. the object annotated is left structurally unchanged, which means we could use a similar approach to annotate data without breaking code (like a javascript path) that relies on a particular structure.</p> <p>Another nice side-effect of this design is that you can use it 'inside' the CSDL too, simply by removing the address of the metadata service from the AppliesTo url - since we are in the CSDL we can us 'relative addressing':</p> <p><em><Annotation AppliesTo="Properties('Namespace.Person.Email')"<br /> xmlns:validation="http://odata.org/vocabularies/constraints"><br /> <validation:Constraint m:Type="validation:Constraint" ><br /> <validation:Regex>^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,6}$.</validation:Regex><br /> <validation:ErrorMessage>Please enter a valid EmailAddress</validation:ErrorMessage><br /> </validation:Constraint><br /> </Annotation></em></p> <p>Indeed if you have a separate file with many annotations for a particular model, you could group a series of annotations together like this:</p> <p><em><Annotations AppliesTo="http://server/service/$metadata/"><br /> <Annotation AppliesTo="Properties('Namespace.Person.Email')"<br /> xmlns:validation="http://odata.org/vocabularies/constraints"><br /> <validation:Constraint m:Type="validation:Constraint" ><br /> <validation:Regex>^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,6}$.</validation:Regex><br /> <validation:ErrorMessage>Please enter a valid EmailAddress</validation:ErrorMessage><br /> </validation:Constraint><br /> </Annotation><br /> <Annotation AppliesTo="Properties('Namespace.Customer.Email')"<br /> xmlns:validation="http://odata.org/vocabularies/constraints"><br /> <validation:Constraint m:Type="validation:Constraint" ><br /> <validation:Regex>^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,6}$.</validation:Regex><br /> <validation:ErrorMessage>Please enter a valid EmailAddress</validation:ErrorMessage><br /> </validation:Constraint><br /> </Annotation><br /> </Annotations></em></p>
@habbes Based on the instances you shared, the following list comprises of dead links and I couldn't identify a valid URL to substitute them with:
The following list comprises of links embedded in code/csdl snippets and they should be fine as is:
I replaced http://odata.org
and https://www.odata.org/
with {{site.url}}
When one is running the site locally or on staging, the Bootstrap CSS file as well as other source files are referenced from the OData.org website. This makes it difficult to identify any issues that might exist (e.g., files missing locally or on staging) until the site is already published. By replacing absolute links with relative links, it makes it possible to run the site from any particular environment in isolation. The isolation makes is possible to pick out any issues before they make it to production.
Here's the absolute URL for the Bootstrap CSS file in _includes/head.html:![image](https://github.com/OData/odataorg.github.io/assets/28291332/f8455051-57ba-4b32-a362-5501b4aa4375)
An important thing to note about the Bootstrap CSS file referenced from the OData.org website is that it was not under source control. It appears like it was pushed to the site directly - probably using ftp. In addition, it's not a replica of any of the officially available versions of bootstrap.min.css:![image](https://github.com/OData/odataorg.github.io/assets/28291332/b6c4920c-d654-4a14-b2b6-378473c6723c)
More about bootswatch here: https://bootswatch.com/ The CSS file with the custom changes has now been added to the repo and is built together with other source files.
Below is a table of the absolute URLs substituted with relative URLs with checks done to confirm that each relative link loads the expected page - no 404s:
In addition, an additional yaml file __configstaging.yml was added. That file the site URL set to the staging endpoint:
The __configstaging.yml file is used when building the site for staging deployment as follows:
When the
config
option is specified in this manner, jekyll will apply the specified config file when building site:transformed to:
Known dead links referencing odata.org
I left the above links as they were. There was no sense in converting them into relative URLs if that too would result into 404s.